2010-11-05 114 views
2

我有一個PHP腳本,其中包含相鄰目錄中的另一個文件。include()在從終端運行時失敗,但不從網絡運行時

示例代碼:

include("../lib/file.php"); 

代碼工作正常,當您通過瀏覽器訪問運行它的頁面,但失敗(中提到的包括()線),如果我從終端或cron運行它。

我收到一條警告,提示「在/path/to/file.php中沒有這樣的文件或目錄」,導致我試圖從該文件調用的類不存在,導致致命錯誤。

什麼會導致這從瀏覽器工作,但終端失敗。

+0

我猜想當你從終端執行代碼時,路徑是相對於php.exe目錄的。 – Harmen 2010-11-05 23:47:05

回答

8

始終始終始終使用絕對路徑,與包括:

include(dirname(__FILE__) . "/../lib/file.php"); 
+0

每天學習一些東西(很難)。謝謝你,先生。 – Evan 2010-11-06 00:00:45

1

總是使用絕對路徑。

至於第二個想法,從終端上運行PHP的,如果你的Web服務使用Apache的mod_php的或/etc/php5/cgi/php.ini如果它運行PHP作爲CGI將執行PHP作爲CLI,所以使用的php.ini中是不同的(通常,/etc/php5/cli/php.ini而不是/etc/php5/apache2/php.ini/fastcgi模式),所以配置可能不同(包括路徑,在你的情況下可能很重要)。

相關問題