Microsoft Windows 上的命令行 PHP

本节包含一些特定于在 Windows 上从命令行运行 PHP 的笔记和提示。

注意:

您应该首先阅读手动安装步骤

无需对 Windows 进行任何更改即可从命令行运行 PHP。

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

但是,有一些简单的步骤可以使这变得更简单。其中一些步骤应该已经完成,但此处重复是为了提供完整的逐步顺序。

    注意:

    Windows 中预先存在的系统变量 PATHPATHEXT 都很重要,应注意不要覆盖任何变量,而只是添加它们。

  • 将 PHP 可执行文件(php.exephp-win.exephp-cli.exe,具体取决于您的 PHP 版本和显示首选项)的位置附加到 PATH 环境变量。有关如何将您的 PHP 目录添加到 PATH 的更多信息,请阅读相应的 FAQ 条目

  • .PHP 扩展名附加到 PATHEXT 环境变量。这可以在修改 PATH 环境变量的同时完成。按照FAQ 中描述的相同步骤进行操作,但修改 PATHEXT 环境变量,而不是 PATH 环境变量。

    注意:

    您放置 .PHP 的位置将决定在存在匹配文件名时执行哪个脚本或程序。例如,将 .PHP 放在 .BAT 之前将导致您的脚本运行,而不是批处理文件,如果存在具有相同名称的批处理文件。

  • .PHP 扩展名与文件类型关联。这是通过运行以下命令来完成的

    assoc .php=phpfile
    

  • phpfile 文件类型与相应的 PHP 可执行文件关联。这是通过运行以下命令来完成的

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

完成这些步骤后,可以从任何目录运行 PHP 脚本,而无需键入 PHP 可执行文件或 .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 环境变量中
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
有关此问题的更多信息,请参阅此» Microsoft 知识库文章:321788。从 Windows 10 开始,此设置似乎已反转,使 Windows 10 的默认安装自动支持继承的控制台句柄。此» Microsoft 论坛帖子提供了解释。

添加注释

用户贡献注释 3 个注释

pimroes at gmail dot com
13 年前
确保您以管理员身份运行 CMD.exe,否则在运行命令时会收到“拒绝访问”错误。
rudigerw at hotmail dot com
8 年前
在 Windows 10 上,只在提升的命令提示符中键入脚本名称来启动 php 会弹出一个选择应用程序的对话框。
事实证明,Windows 会在通过 ftype 关联的 phpfile 程序无法执行时执行此操作。在这种情况下,这种情况发生是因为它试图在非管理员模式下运行 php.exe,即使是从提升的命令提示符启动。要解决此问题,请找到您的 php.exe,右键单击,“属性”,“兼容性”,在“设置”下选中“以管理员身份运行此程序”,然后单击“更改所有用户的设置”。
vechenjivot at gmail dot com
8 年前
在 Windows 10 上,上述注册表条目对我不起作用。为了使它们起作用,您需要写入
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php\UserChoice
即使您以管理员身份运行 regedit(可能是因为 Hash 密钥),您也无权访问它。
解决方案实际上要简单得多 - 右键单击资源管理器中的 PHP 文件,并将它始终与 php.exe 关联。
然后,您需要修改 PATH 变量
setx PATH "%PATH%;c:\path\to\php" /M
如果您想使用以下命令执行文件
php file.php
To Top