PHP Внезапно прекратить поиск файлов в текущем каталоге - PullRequest
1 голос
/ 12 мая 2011

Итак, я столкнулся с чем-то действительно странным сегодня.

Я обновил свой PHP APC до последней версии и перезапустил apache.И вдруг все скрипты в apache начинают жаловаться на невозможность найти нужные файлы.

Я обычно получаю:

require_once 'Abstract.php'

, учитывая, что Abstract.phpв том же каталоге, что и другой сценарий.

Ошибки, где:

PHP Предупреждение: require_once (Abstract.php) [function.require-Once]: не удалось открыть поток:Нет такого файла или каталога в data.php в строке 411. Неустранимая ошибка PHP: require_once () [function.require]: Не удалось открыть обязательный файл 'Abstract.php' (include_path = '/ var / www / application /../ library: /var / www / library:.: / usr / share / php: / usr / share / pear ') в файле data.php в строке 411

Как видно, текущий каталог (.)включается в include_path выполнения.Почему это случилось?Кто-нибудь видел это раньше?

Ответы [ 2 ]

1 голос
/ 12 мая 2011

AFAIK, . обозначает каталог, в котором находится бинарный файл PHP. Функции require* и include* учитывают текущий рабочий каталог, который можно изменить с помощью chdir().

Как было предложено cwallenpoole , попробуйте использовать константу __DIR__:

require_once __DIR__ . '/Abstract.php';

Если это также не помогло, это означает, что в другом месте произошла неправильная конфигурация. Если это работает, это, вероятно, означает, что текущий исполняющий поток PHP имеет свой рабочий каталог, настроенный на другое значение, и вам нужно либо изменить текущий рабочий каталог, либо изменить операторы require для использования абсолютных путей.

Кроме того, вы рассматривали возможность использования функции автозагрузки? Таким образом, у вас есть одна точка входа для поиска классов.

0 голосов
/ 13 мая 2011

Хорошо, я в конце концов понял это, и хотя должен поделиться, если кто-то столкнется с той же проблемой, что и я.

Раньше у меня был APC 3.0.x и он обновлен до 3.1.8.Как кажется, в APC 3.1.8 есть ошибка, которая включает / требует PHP.

См. Относительную ссылку здесь: http://pecl.php.net/bugs/bug.php?id=22687

Спасибо всем за быструю обратную связь:)

...