Настройка включить путь в PHP периодически завершается сбоем


Я пробовал оба варианта:

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(), который приведет к фатальной ошибке, эффективно приводящей к сбою сайта.

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


@ примечание

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

Версия в сценарии изначально была

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

И, таким образом, .:.: исходил из существующего пути:

ini_get('include_path')

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

Author: Community, 2008-09-03

3 answers

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

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

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

 3
Author: Ramon de la Fuente, 2010-02-09 09:32:29

Вы пробовали 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, останется)

 4
Author: Ian, 2008-09-03 19:18:17

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

 0
Author: , 2008-09-03 15:05:31