Что может изменить include_path между php.ini и файлом PHP - PullRequest
4 голосов
/ 21 июля 2009

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

У меня есть файл php.ini со следующим include_path

 include_path = ".:/usr/local/lib/php"

У меня есть файл PHP в руте с именем test.php со следующим вызовом phpinfo

 <?php
      phpinfo();

Когда я смотрю на вызов phpinfo, локальные значения для include_path переопределяются

                 Local Value                                        Master Value
 include_path    .;C:\Program Files\Apache Software Foundation\     .:/usr/local/lib/php
                 Apache2.2\pdc_forecasting\classes               

Кроме того, файлы php.ini указывают, что дополнительные файлы .ini не загружаются

Configuration File (php.ini) Path           /usr/local/lib
Loaded Configuration File                   /usr/local/lib/php.ini
Scan this dir for additional .ini files     (none)
additional .ini files parsed                (none)

Итак, мой вопрос в том, что еще в стандартной системе PHP (включая некоторые библиотеки PEAR) могло бы переопределить include_path между php.ini и реальным кодом php, который интерпретируется / выполняется.

Ответы [ 3 ]

5 голосов
/ 21 июля 2009

Вне пути PHP

ini_set( 'include_path', 'new/path' );
// or
set_include_path( 'new/path' );

Который может быть загружен в файл PHP через auto_prepend_file, файл .htaccess может сделать это также

phpvalue include_path new/path
3 голосов
/ 21 июля 2009

Есть несколько причин, по которым вы получаете странные результаты.

  • include_path переопределен где-то в вашем php-коде. Проверьте свой код, содержит ли он set_include_path() вызов. С помощью этой функции вы можете настроить путь включения. Если вы хотите сохранить текущий путь, просто объедините строку . PATH_SEPARATOR . get_include_path()
  • include_path переопределен в .htaccess файле. Проверьте, есть ли какие-либо директивы php_value или php_flag, добавляющие хитрые пути
  • нестандартный файл конфигурации в интерпретаторе php. Очень маловероятно, однако возможно, что ваш php-процесс был запущен с передачей пользовательского файла php.ini. Проверьте настройки вашего веб-сервера и / или дистрибутив php, чтобы увидеть, где находится php.ini. Может быть, вы смотрите на неправильный.
2 голосов
/ 21 июля 2009

Файл .htaccess или конфигурация Apache (httpd.conf) также могут быть причиной.

Проверьте все, что выглядит следующим образом:

php_value include_path something

Больше информации об этом поведении здесь:

PHP: Как изменить настройки конфигурации


Другим вариантом будет использование ini_set() или set_include_path() где-то, но с учетом того, что ваш test.php содержит только phpinfo() (и предполагая, что test.php вызывается напрямую), я сомневаюсь, что это ваша проблема.

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