2012-01-04 34 views
1

所以我有PHPWhoIs位於我的服務器的根目錄plugins/phpwhois-4.2.2默認情況下包括PHPWhoIs所有腳本

我能夠通過包括它喜歡用在PHP腳本的Whois()類:

include_once('../../../plugins/phpwhois-4.2.2/whois.main.php'); 

$whois = new Whois(); 

但我試圖讓我的服務器默認包含這個文件。我嘗試添加這我的php.ini

include_path=".:/plugins/phpwhois-4.2.2/whois.main.php" 

,並確認它帶着var_dump(ini_get('include_path'));,但隨後說,類Whois()不存在。

我也注意到我覆蓋了默認include_path

如何添加此路徑以包含在默認情況下在任何腳本中工作?

回答

3

包含路徑是用來告訴PHP就是當你在代碼中使用了包括一看,所以這是一個目錄列表...它不會自動做包括你

因此,與

include_path=".:/plugins/phpwhois-4.2.2 

在php.ini,然後

include "whois.main.php" 

將成功找到該文件,包括

你可能看auto_prepend_file INI設置雖然包含一個特殊的PHP文件之前,你的腳本

+0

我該如何使用auto_prepend_file? – 2012-01-05 00:24:37

+0

這個想法是每次我想爲每個站點使用它時,不必包含文件。 – 2012-01-05 00:26:51

+1

@stevether - auto_prepend_file的__auto__部分表示自動,即不必每次都手動包含。你可以通過設置auto_prepend_file =「/ plugins/phpwhois-4.2.2/whois.main來使用它。php「在您的php.ini中,然後在您的腳本中實例化類 – 2012-01-05 07:30:17

1

這裏真正的問題的主體是你不想寫的路徑,包括文件。改爲使用autoloader

如果您仍然需要設置默認包含路徑,我建議您只需在腳本中回顯當前包含路徑,然後在php.ini中使用該路徑,添加plugins目錄或任何基本包含路徑。將此與自動裝帶器一起使用非常有效。

然後在您的包含路徑中,製作setup.php並使用它來設置自動加載器。現在,在您的任何網頁上,您的包含僅僅是require 'setup.php';

+0

但是我不必在每個文件中都使用它,我想要使用這個腳本? – 2012-01-05 00:13:22

+0

@stevether我更新了我的問題。你明白。 – 2012-01-05 03:33:37

0

您正在改變的「include_path」參數是錯誤的,儘管名稱確實表明它是相關的。它實際上用於設置默認的目錄,其中包括文件被尋找 - 許多人更喜歡他們的包括超出他們通常的網絡空間,以防止他們被用於上下文,除其他原因之外。

我相信你需要設置的參數是auto_prepend_file。將其設置爲相關文件,並將其載入,就好像包含在每個腳本中一樣。

相關問題