我有一個PHP腳本,其中包含相鄰目錄中的另一個文件。include()在從終端運行時失敗,但不從網絡運行時
示例代碼:
include("../lib/file.php");
代碼工作正常,當您通過瀏覽器訪問運行它的頁面,但失敗(中提到的包括()線),如果我從終端或cron運行它。
我收到一條警告,提示「在/path/to/file.php中沒有這樣的文件或目錄」,導致我試圖從該文件調用的類不存在,導致致命錯誤。
什麼會導致這從瀏覽器工作,但終端失敗。
我有一個PHP腳本,其中包含相鄰目錄中的另一個文件。include()在從終端運行時失敗,但不從網絡運行時
示例代碼:
include("../lib/file.php");
代碼工作正常,當您通過瀏覽器訪問運行它的頁面,但失敗(中提到的包括()線),如果我從終端或cron運行它。
我收到一條警告,提示「在/path/to/file.php中沒有這樣的文件或目錄」,導致我試圖從該文件調用的類不存在,導致致命錯誤。
什麼會導致這從瀏覽器工作,但終端失敗。
始終始終始終使用絕對路徑,與包括:
include(dirname(__FILE__) . "/../lib/file.php");
每天學習一些東西(很難)。謝謝你,先生。 – Evan 2010-11-06 00:00:45
總是使用絕對路徑。
至於第二個想法,從終端上運行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模式),所以配置可能不同(包括路徑,在你的情況下可能很重要)。
我猜想當你從終端執行代碼時,路徑是相對於php.exe目錄的。 – Harmen 2010-11-05 23:47:05