Настройка include path в PHP периодически завершается сбоем

StackOverflow https://stackoverflow.com/questions/41836

  •  09-06-2019
  •  | 
  •  

Вопрос

Я пробовал и то, и другое :

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

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


@примечание

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

Версия in script изначально была

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

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

ini_get('include_path')

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top