确保您以管理员身份运行 CMD.exe,否则在运行命令时会出现“拒绝访问”错误。
本节包含一些特定于在 Windows 上从命令行运行 PHP 的说明和提示。
注意:
请先阅读手动安装步骤!
无需对 Windows 进行任何更改即可从命令行运行 PHP。
C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
但是,有一些简单的步骤可以使此操作更简单。其中一些步骤可能已经执行过,但此处重复列出是为了提供完整的逐步序列。
注意:
PATH 和 PATHEXT 都是 Windows 中预先存在的重要的系统变量,应注意不要覆盖任何一个变量,而只需向其中添加内容。
将 PHP 可执行文件(php.exe、php-win.exe 或 php-cli.exe,具体取决于 PHP 版本和显示偏好)的位置附加到 PATH 环境变量。有关如何将相应目录添加到 PATH 的更多信息,请阅读相应的常见问题解答条目。
将 .PHP
扩展名附加到 PATHEXT 环境变量。这可以在修改 PATH 环境变量的同时进行。按照常见问题解答中描述的相同步骤操作,但修改 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有关此问题的更多信息,请参阅此» Microsoft 知识库文章:321788。从 Windows 10 开始,此设置似乎已反转,使 Windows 10 的默认安装自动支持继承的控制台句柄。此» Microsoft 论坛帖子提供了说明。Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "InheritConsoleHandles"=dword:00000001
在 Windows 10 上,仅通过在提升的命令提示符中键入脚本名称来启动 php 会弹出一个对话框,要求选择一个应用程序。
事实证明,当通过 ftype 关联的 phpfiles 程序无法执行时,Windows 会这样做。在这种情况下,这是因为即使从提升的命令提示符启动,它也尝试以非管理员模式运行 php.exe。要解决此问题,请找到您的 php.exe,右键单击,“属性”,“兼容性”,在“设置”下选中“以管理员身份运行此程序”;然后还单击“更改所有用户的设置”。