Ошибка Require_once PHP

Я программировал на PHP уже несколько лет и никогда не сталкивался с этой ошибкой раньше.

Вот мой файл widget.php :

require_once('fruit.php'); echo "I am compiling just fine!!!"; 

И файл fruit.php :

 $bVar = true; 

Когда эти два файла выглядят так, тогда все компилируется без ошибок, и я получаю сообщение об успешном компиляции « Я компилирую только штраф !!! ».

Теперь, в тот же момент, когда я перемещаю файл fruit.php на один уровень каталогов и меняю файл widget.php, чтобы отразить реструктуризацию каталога:

 require_once('../fruit.php'); echo "I am compiling just fine!!!"; 

Теперь все внезапно, я получаю предупреждения PHP и фатальные ошибки:

 Warning: require_once(../fruit.php) [function.require-once]: failed to open stream: No such file or directory in /webroot/app/widget.php on line 1 Fatal error: require_once() [function.require]: Failed opening required '../fruit.php' (include_path='.:/usr/local/php5/lib/php') in /webroot/app/widget.php on line 1 

За все годы работы с PHP я никогда не видел require_once (), как раньше. Есть идеи?!?!

Solutions Collecting From Web of "Ошибка Require_once PHP"

Возможно, вы находитесь в неправильном рабочем каталоге. Его плохая идея полагаться на него (за исключением того, что вы явно хотите получить к нему доступ) в любом случае. использование

 require __DIR__ . '/../fruit.php'; 

или с пред-5.3

 require dirname(__FILE__) . '/../fruit.php'; 

Напомните, что пути, начинающиеся с .. , или . не разрешены против include-path, но только против текущего рабочего каталога.

Помните, что во втором случае вы указываете путь, но в первом случае он использует ваш путь include. Возможно, вместо того, чтобы явно указывать .. во втором случае вы можете изменить свой путь include.

http://php.net/manual/en/function.set-include-path.php

Я знаю, что вопрос старый, но он по-прежнему актуальный.

По моему опыту, директива open_basedir , скорее всего, вызовет эту проблему.

 require_once('fruit.php'); 

Это ищет файл fruit.php в том же каталоге, в котором находится widget.php, независимо от того, что представляет собой текущий рабочий каталог.

 require_once('../fruit.php'); 

Это ищет файл fruit.php в каталоге выше текущего каталога, а не в каталоге выше одного widget.php.