Установка пути включения в PHP периодически дает сбой - PullRequest
2 голосов
/ 03 сентября 2008

Я пробовал оба:

ini_set('include_path', '.:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes');

, а также:

php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes"

в файле .htaccess.

Оба метода на самом деле работают , но только с перерывами. Таким образом, они будут нормально работать для запросов примерно на 37 страницах, а затем не выполнят запросы на 42 страницах, что приведет к вызову require (), что приведет к фатальной ошибке, приводящей к сбою сайта.

Я даже не уверен, с чего начать, пытаясь выяснить, что происходит!


@ cnote

Похоже, вы продублировали текущий каталог в вашем пути включения. Попробуйте удалить один из символов «.:» Из вашей строки.

Версия скрипта изначально была

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');

и, следовательно,.:.: Исходил из существующего пути:

ini_get('include_path')

Я все равно попытался удалить его, и проблема не исчезла.

Ответы [ 3 ]

4 голосов
/ 03 сентября 2008

Вы пробовали set_include_path () ?. В качестве преимущества это возвращает false при сбое, позволяя вам по крайней мере уловить возникновение и сгенерировать некоторые значимые данные отладки. Кроме того, вы должны использовать константу PATH_SEPARATOR, поскольку она отличается в Windows / * nix.

В качестве конкретного примера:

set_include_path('.' . PATH_SEPARATOR . './app/lib' . PATH_SEPARATOR . get_include_path());

(get_include_path () в конце означает, что независимо от того, какой путь ini / htaccess задан, останется)

3 голосов
/ 09 февраля 2010

Оказалось, что проблема связана с ошибкой PHP в 5.2.5

Установка «admin_flag» для include_path привела к тому, что путь включения в некоторых запросах был пустым, и Plesk установил admin_flag в конфигурации по умолчанию для чего-то или другого. Обновление PHP решило проблему.

http://bugs.php.net/bug.php?id=43677

0 голосов
/ 03 сентября 2008

Похоже, вы продублировали текущий каталог в вашем пути включения. Попробуйте удалить один из символов «.:» Из вашей строки.

...