命令列上的行為差異
從 CLI 執行時,PHP 表現出一些與從 Web 伺服器執行時不同的行為。應牢記這些差異,尤其是在可能從兩個環境執行相同指令碼的情況下。
- 無目錄更改從 Web 伺服器執行指令碼時,當前工作目錄始終是指令碼本身的目錄。程式碼
require("./stuff.inc");
假定檔案與指令碼位於同一目錄中。在命令列上,當前工作目錄是你呼叫指令碼時所在的目錄。將從命令列呼叫的指令碼應始終使用絕對路徑。 (注意魔術常量__DIR__
和__FILE__
繼續按預期工作,並返回指令碼的位置。) - 無輸出緩衝
php.ini
指令output_buffering
和implicit_flush
分別預設為false
和true
。緩衝仍然可用,但必須明確啟用,否則將始終實時顯示輸出。 - 沒有時間限制
php.ini
指令max_execution_time
設定為零,因此預設情況下指令碼不會超時。 - 沒有 HTML 錯誤如果你啟用了
php.ini
指令html_errors
,它將在命令列中被忽略。 - 可以載入不同的
php.ini
。當你從 cli 使用 php 時,它可以使用與 Web 伺服器不同的php.ini
。你可以通過執行php --ini
來了解正在使用的檔案。