Require_once PHP Error - PullRequest
       1

Require_once PHP Error

9 голосов
/ 11 июля 2011

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

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

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

И мой fruit.php файл:

$bVar = true;

Когда эти два файла выглядят так ^, тогда все компилируется без ошибок, и я получаю " Iя компилирую просто отлично !!!"сообщение об успехе.

Теперь, в ту минуту, когда я перемещаю файл fruit.php на один уровень вверх и меняю свой виджет .Файл 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 () провалился, как это раньше.Есть идеи?!?!

Ответы [ 4 ]

13 голосов
/ 11 июля 2011

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

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

или с пре-5.3

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

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

1 голос
/ 11 июля 2011

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

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

0 голосов
/ 28 июня 2013

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

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

0 голосов
/ 11 июля 2011
require_once('fruit.php');

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...