什么可以改变php.ini和PHP文件之间的include_path

时间:2009-07-20 22:57:09

标签: apache include php

我在一个我没有设置的系统上继承了一些代码,我遇到了一个跟踪PHP包含路径设置的问题。

我有一个带有以下include_path

的php.ini文件
 include_path = ".:/usr/local/lib/php"

我在webroot中有一个名为test.php的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库)可能会覆盖php.ini和正在解释/执行的实际php代码之间的include_path。

3 个答案:

答案 0 :(得分:5)

PHP之外的方式

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

可以通过auto_prepend_file在PHP文件中加载,.htaccess文件也可以这样做

phpvalue include_path new/path

答案 1 :(得分:3)

有几个原因导致你得到奇怪的结果。

  • include_path在PHP代码中的某处覆盖。检查您的代码是否包含set_include_path()来电。使用此功能,您可以自定义包含路径。如果要保留当前路径,只需连接字符串. PATH_SEPARATOR . get_include_path()
  • .htaccess文件中覆盖了include_path。检查是否有任何php_valuephp_flag指令添加了狡猾的路径
  • php解释器中的非标准配置文件。不太可能,您的php进程已经通过传递自定义php.ini文件启动。检查您的Web服务器设置和/或php发行版,以查看php.ini的预期位置。也许你看错了。

答案 2 :(得分:2)

.htaccess文件或Apache的配置(httpd.conf)也可以负责。

检查以下内容:

php_value include_path something

此处有关此行为的更多信息:

  

PHP: How to change configuration settings


另一种选择是在某处使用ini_set()set_include_path(),但考虑到您的test.php仅包含phpinfo()(并假设test.php是直接打电话),我怀疑这是你的问题。

相关问题