Не удалось открыть поток: нет такого файла или каталога, да, есть!

У меня проблема с требованием некоторых файлов, PHP сообщает мне, что этих файлов не существует, но когда я просматриваю каталог, он сообщает мне, что они существуют.

Я упростил файлы до функции require , но она по-прежнему не работает.

Вот моя настройка:

root/
    test.php
    test/
        test2.php
        sub/
            test3.php

test.php

echo    'test';
require 'test/sub/test3.php';

test / test2.php (файл, который по какой-то причине не включается)

echo    'test2';

test / sub / test3.php

echo    'test3';
/* 
because we are still on test.php, the include path is the root
that means the following would work:
require 'test/test2.php';
however I don't know this path in this file. (it's dynamic)
I thought this would work:
*/
set_include_path(dirname(__FILE__));
require '../test2.php';

EDIT

Хорошо, когда я изменил это:

set_include_path(dirname(__FILE__));
require '../test2.php';

на

set_include_path(dirname(__FILE__)."/../"));
require 'test2.php';

, он работает. wtf php?


Теперь это мой результат:

testtest3
Warning: require(../test2.php) [function.require]: failed to open stream: No such file or directory in siteroot/test/sub/test3.php on line 6

Fatal error: require() [function.require]: Failed opening required '../test2.php' (include_path='siteroot/test/sub') in siteroot/test/sub/test3.php on line 6

Если я добавлю следующий код в test3.php :

echo '<pre>';
print_r(scandir(dirname(__FILE__).'/../'));
echo '</pre>';

, я получу (как и ожидалось) следующее:

Array
(
    [0] => .
    [1] => ..
    [2] => sub
    [3] => test2.php
)

Я думаю, что Я схожу с ума, когда я читаю ошибки, мне кажется, что PHP сообщает мне, что файла не существует, точно в том месте, где находится файл.

8
задан Kokos 16 June 2011 в 15:19
поделиться