命令列上的行為差異

從 CLI 執行時,PHP 表現出一些與從 Web 伺服器執行時不同的行為。應牢記這些差異,尤其是在可能從兩個環境執行相同指令碼的情況下。

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