2011-09-20 74 views
-1

我最近發現了set_include_path(),並發現返回的路徑是我的includes目錄的路徑。PHP/Apache默認查找包含文件夾嗎?

PHP會自動查找includes目錄並將include_path更新爲此?

我也注意到,當在類本身之外設置時,我使用set_include_path設置的幾條路徑在類方法中不可用。

這是爲什麼?

$include_root = $_SERVER['DOCUMENT_ROOT'] . '/path/to/includes/'; 
$include_paths = get_include_path() . PATH_SEPARATOR . 
       $include_root . PATH_SEPARATOR . 
       $include_root . 'classes/' . PATH_SEPARATOR; 

set_include_path($include_paths); 

感謝您提前給出的所有建議!

+0

你能澄清你通過設置包含路徑「之類的外部」的意思?這是否與類定義分開?東西初始化的順序是什麼?另外,是否可以再次調用在這些代碼的這些部分之間運行的'set_include_path'(或ini_set('include_path',...)')? – IMSoP

回答

1

這個(包含目錄的任何「自動」查找)都會在php.ini文件中設置。創建一個名爲test.php的含測試頁:

<?php phpinfo(); ?> 

點瀏覽器test.php的並查找這個變量:

include_path .:/usr/share/php:/usr/share/pear 

你也可以找到它的php.ini文件中:

Loaded Configuration File /etc/php5/apache2/php.ini 

我沒有類方法問題的答案。

如果你在命令行,而不是通過瀏覽器運行,你可以使用檢查ini文件:

php -r "phpinfo();" | less 
+0

我通過phpinfo()看到的值;是:。; C:\ xampp \ php \ PEAR 我很好奇爲什麼這不是返回的值。 – hungerstar

+0

嗯,我也是! *返回什麼值* –

+0

現在我正在開發,所以它是:C:/ xampp/htdocs/sitename/includes/ 如果在我的類方法中調用。結果是相同的,無論是否使用set_include_path()在類本身之外設置include路徑。我知道如果我在類構造函數中設置路徑都可以正常工作。我很好奇爲什麼。 – hungerstar