确保您以管理员身份运行 CMD.exe,否则在运行命令时会收到“拒绝访问”错误。
本节包含一些特定于在 Windows 上从命令行运行 PHP 的笔记和提示。
注意:
您应该首先阅读手动安装步骤!
无需对 Windows 进行任何更改即可从命令行运行 PHP。
C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
但是,有一些简单的步骤可以使这变得更简单。其中一些步骤应该已经完成,但此处重复是为了提供完整的逐步顺序。
注意:
Windows 中预先存在的系统变量 PATH 和 PATHEXT 都很重要,应注意不要覆盖任何变量,而只是添加它们。
将 PHP 可执行文件(php.exe、php-win.exe 或 php-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有关此问题的更多信息,请参阅此» 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 会弹出一个选择应用程序的对话框。
事实证明,Windows 会在通过 ftype 关联的 phpfile 程序无法执行时执行此操作。在这种情况下,这种情况发生是因为它试图在非管理员模式下运行 php.exe,即使是从提升的命令提示符启动。要解决此问题,请找到您的 php.exe,右键单击,“属性”,“兼容性”,在“设置”下选中“以管理员身份运行此程序”,然后单击“更改所有用户的设置”。
在 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