2009-07-20 2 views
4

Я унаследовал какой-то код в системе, которую я не установил, и у меня возникает проблема с отслеживанием, где устанавливается путь включения PHP ,Что может изменить include_path между php.ini и файлом 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-код, который интерпретируется/выполняется.

ответ

5

Outisde из PHP способов

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

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

phpvalue include_path new/path 
+0

Grumble ворчать .htaccess. Я расчесывался через http.conf, ища переопределения и забыл о .htaccess. –

2

.htaccess файл или конфигурацию Апача (httpd.conf) также может быть ответственным.

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

php_value include_path something 

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

PHP: How to change configuration settings


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

3

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

  • 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. Возможно, вы смотрите на неправильный.
+0

+1: Даже если вы в основном повторяете все, что уже было сказано. –