2009-07-20 101 views
4

我已经在我没有设置的系统上继承了一些代码,并且遇到了一个问题,它追踪了设置PHP包含路径的位置。什么可以改变php.ini和PHP文件之间的include_path

我有以下的include_path

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

我有一个名为test.php的有以下的phpinfo呼叫

<?php 
     phpinfo(); 

当我采取了Webroot公司的PHP文件一个php.ini文件看看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的include_path中.ini和实际的php代码被解释/执行。

回答

5

Outisde哪个可以在一个PHP文件通过auto_prepend_file加载的PHP方式

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

,一个.htaccess文件可以做到做得一样好

phpvalue include_path new/path 
+0

抱怨抱怨.htaccess。我梳理了http.conf,寻找overrides并忘记了.htaccess。 – 2009-07-21 00:30:22

2

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

检查任何看起来像下面这样:

PHP: How to change configuration settings


另一种选择是使用:有关行为在这里

php_value include_path something 

更多信息的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_valuephp_flag指令添加躲闪路径
  • php解释器中的非标准配置文件。不太可能,不过可能的是,您的php进程已经通过自定义php.ini文件传递开始。检查您的Web服务器设置和/或PHP分配,以查看php.ini的预期位置。也许你看错了。
+0

+1:即使你基本上重复了已经说过的一切。 – 2009-07-20 23:10:33

相关问题