在 Windows 系統中通過命令行(CMD/PowerShell)運行 PHP 腳本,是開發調試、定時任務、CLI 工具開發的必備技能。
cmd → 回車cd /d E:\wamp\bin\php\php5.2.6
/d 參數允許跨盤符切換目錄。
php.exe a.php 11
php.exe:PHP 解釋器a.php:腳本文件名(需在當前目錄或指定完整路徑)11:命令行參數,腳本中通過 $argv[1] 獲取<?php
// a.php
if (isset($argv[1])) {
$_GET['id'] = $argv[1]; // 兼容原有 $_GET 邏輯
}
$id = $_GET['id'] ?? 0;
echo $id + 1; // 輸出 12
?>
Path,雙擊編輯E:\wamp\bin\php\php5.2.6)新打開的 CMD 窗口中,任意目錄下均可直接運行:
php.exe "D:\projects\script.php" arg1 arg2
注意:文件路徑含空格時需加雙引號。
<?php
// $argv 數組結構
// $argv[0] = 腳本文件名
// $argv[1] = 第一個參數
// $argv[2] = 第二個參數...
// $argc = 參數總數(含腳本名)
echo "腳本名: $argv[0]\n";
echo "參數數量: " . ($argc - 1) . "\n";
echo "所有參數: " . implode(', ', array_slice($argv, 1)) . "\n";
// 兼容 Web 環境的參數獲取函數
function getCliParam($name, $default = null) {
global $argv;
foreach ($argv as $arg) {
if (strpos($arg, "$name=") === 0) {
return substr($arg, strlen($name) + 1);
}
}
return $default;
}
// 使用:php script.php --user=admin --action=delete
$user = getCliParam('--user');
$action = getCliParam('--action');
?>
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 提示「php.exe 不是內部命令」 | PHP 目錄不在 PATH 中 | 添加到環境變量或使用完整路徑 |
| 中文參數亂碼 | CMD 默認編碼為 GBK | 腳本開頭加 chcp 65001 或使用 PowerShell |
| 腳本無法讀取相對路徑文件 | 工作目錄非腳本目錄 | 使用 __DIR__ 或 chdir(__DIR__) |
| 最大執行時間限制 | CLI 默認無限制,但可能被 php.ini 設置 | 檢查 max_execution_time,CLI 下建議設 0 |
#!/usr/bin/env php
<?php
echo "Hello CLI!\n";
?>
賦予執行權限:chmod +x script.php,直接運行 ./script.php。
composer require symfony/console
構建專業級命令行應用,支持參數驗證、幫助信息、命令分組等。
php -S localhost:8000 -t public/
無需 Apache/Nginx 即可快速預覽項目。
掌握 CMD 運行 PHP 腳本,關鍵在於:配置 PATH 環境變量、理解 $argv/$argc 參數機制、處理編碼與路徑問題。現代開發建議結合 Composer 工具鏈構建標準化 CLI 應用。