PHP 在 Microsoft Windows 下的命令行方式

本章包含有針對在 Windows 下以命令行運行 PHP 的說明與提示。

注意:

應該先閱讀 手工安裝步驟!

要在命令行下運行 PHP,可以無需對 Windows 做任何改動。

C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

但是有幾個很容易的步驟可以使其更加簡便。某些步驟可能已經在之前完成了,不過還是在這里重復說明以便提供一個完整的步驟序列。

    注意:

    PATHPATHEXT 都是在 Windows 下已有的重要環(huán)境變量,要留意不要覆蓋了其內容,僅僅是向其中添加內容。

  • 將 PHP 可執(zhí)行文件(php.exephp-win.exe 或者 php-cli.exe)的路徑添加到 PATH 環(huán)境變量中去。如何將 PHP 目錄添加到 PATH 中請參閱與之相關的常見問題。

  • .PHP 后綴添加到 PATHEXT 環(huán)境變量中去??梢栽谛薷? PATH 環(huán)境變量時同時進行。跟常見問題中說明的步驟一樣,要修改的是 PATHEXT 環(huán)境變量而不是 PATH 環(huán)境變量。

    注意:

    .PHP 放置到什么位置將決定具有相同文件名時運行的優(yōu)先級。例如將 .PHP 放到 .BAT 之前將導致如果有同名的 PHP 腳本和批處理文件,則 PHP 腳本會運行。

  • .PHP 后綴關聯(lián)為一種文件類型,用以下命令完成:

    assoc .php=phpfile
    

  • phpfile 文件類型關聯(lián)到適當的 PHP 可執(zhí)行文件,用以下命令完成:

    ftype phpfile="C:\php\php.exe" -f "%1" -- %~2
    

按照以上步驟將使 PHP 腳本可以在任何目錄下運行,不需要輸入 PHP 可執(zhí)行文件名以及 .PHP 后綴,并且所有參數都會被傳遞給腳本來處理。

以下例子說明了可以手工修改的注冊表項目變化。

示例 #1 注冊表變化

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\php\\php-win.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\php\\php.exe\" -f \"%1\" -- %~2"

有了這些改變之后,本頁頂端第一個例子中的命令可以寫成這樣:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3
或者如果 "C:\PHP Scripts" 路徑位于 PATH 環(huán)境變量中的話:
script -arg1 -arg2 -arg3

注意:

不過如果想要通過此技巧將 PHP 腳本作為命令行管道過濾器的話,有個小問題。例如以下例子:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
或者
dir | script -arg1 -arg2 -arg3
此時腳本只是掛起,沒有輸出任何內容。要解決此問題,還需要做一個注冊表修改。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
有關此問題的更多信息見? 微軟知識庫文章:321788。 從 Windows 10 開始,此設置似乎被顛倒,請參考以下鏈接 ?  Microsoft 論壇帖子。