PHP 不僅是 Web 開發語言,更是強大的命令行腳本工具。掌握 CLI 模式能讓你脫離 Web 伺服器執行定時任務、數據遷移、隊列消費、代碼檢查等運維工作。本文系統梳理核心用法與實戰技巧。
| 命令 | 作用 |
|---|---|
| 顯示 PHP 版本、構建日期、Zend Engine 版本 | |
| 列出已載入的擴展模組 | |
輸出無 HTML 格式的 phpinfo()(配合 grep 篩選極佳) | |
顯示載入的 php.ini 路徑與掃描目錄 |
php -f script.php 或 php script.php(-f 可省略)。php -r 'echo "Hello CLI\n";'(單引號避免 Shell 變量展開)。php -a 進入 REPL,逐行輸入代碼即時見結果(需編譯時啟用 --with-readline)。注意:CLI 環境下 $_GET、$_POST、$_SESSION、$_SERVER['REQUEST_URI'] 等 Web 專用超全局變量**不可用**,但 $argc/$argv 可接收命令行參數。
php -l script.php(僅檢查語法,不執行,CI/CD 必備)。php -s script.php 輸出 HTML 格式高亮代碼,適合文檔生成。php --rf function_name 顯示函數簽名php --rc ClassName 顯示類結構php --re extension_name 顯示擴展信息# crontab -e
# 每天凌晨 3 點執行訂單數據同步,標準輸出/錯誤導向日誌
0 3 * * * /usr/bin/php /var/www/html/cron/sync_orders.php >> /var/log/cron/sync_orders.log 2>&1
腳本內部建議:
set_time_limit(0) 防止超時。ignore_user_abort(true) 避免因終端斷開中斷。flock() 或 Redis 分佈式鎖)防止重複執行。#!/usr/bin/env php,賦予執行權限 chmod +x script.php 後可直接 ./script.php 運行。pcntl_fork() 或 symfony/process 實現多進程任務。symfony/console 組件美化日誌。掌握 PHP CLI,讓你的腳本能力從「能跑」進化為「好維護、可監控、高併發」,是每位 PHPer 邁向高階工程師的必修課。