2009-07-20 100 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

相關問題