从命令行运行PHP时,Windows无法执行任何操作。
C:phpphp.exe -f "C:PHP Scriptsscript.php" -- -arg1 -arg2 -arg3
但是,有几个简单的步骤可以让它变得更简单。有些步骤可能早就完成了,但为了提供完整的一系列步骤,请在此重复步骤。
说明:
PATH和PATHEXT都是Windows中已经存在的重要环境变量。请注意不要覆盖内容。只需追加内容。
将PHP可执行文件(php.exe、php-win.exe或php-cli.exe)的路径添加到PATH环境变量中。
将.PHP后缀添加到PATHEXT环境变量中。这可以在更改PATH环境变量时同时进行。如常见问题解答中所述,更改PATHEXT环境变量而不是PATH环境变量。
说明:
.PHP放在哪里,决定以相同文件名执行的优先度。例如。如果将PHP放在.BAT之前,则在具有相同名称的PHP脚本和批处理文件时执行PHP脚本。
要将.PHP后缀与文件类型相关联,请使用以下命令:
assoc .php=phpfile
要将phpfile文件类型与适当的PHP可执行文件相关联,请使用以下命令:
ftype phpfile="C:phpphp.exe" -f "%1" -- %~2
按照上述步骤,PHP脚本将在任何目录下运行。不需要输入PHP可执行文件名和.PHP后缀。所有参数都将传递给脚本进行处理。
以下示例说明可以手动更改的注册表项更改。
示例1修改注册表:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREClasses.php] @="phpfile" "Content Type"="application/php" [HKEY_LOCAL_MACHINESOFTWAREClassesphpfile] @="PHP Script" "EditFlags"=dword:00000000 "BrowserFlags"=dword:00000008 "AlwaysShowExt"="" [HKEY_LOCAL_MACHINESOFTWAREClassesphpfileDefaultIcon] @="C:\php\php-win.exe,0" [HKEY_LOCAL_MACHINESOFTWAREClassesphpfileshell] @="Open" [HKEY_LOCAL_MACHINESOFTWAREClassesphpfileshellOpen] @="&Open" [HKEY_LOCAL_MACHINESOFTWAREClassesphpfileshellOpencommand] @=""C:\php\php.exe" -f "%1" -- %~2"
通过这些更改,此页顶部的第一个示例命令可以描述为:
"C:PHP Scriptsscript" -arg1 -arg2 -arg3
或者,如果“C:PHP Scripts”路径位于PATH环境变量中:
script -arg1 -arg2 -arg3
说明:
但是,如果使用此技巧将PHP脚本用作命令行管道过滤器,则存在一个小问题。例如:
dir | "C:PHP Scriptsscript" -arg1 -arg2 -arg3
或者
dir | script -arg1 -arg2 -arg3
此时,脚本锁定,不输出任何内容。要解决此问题,必须再修改一个注册表。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorer] "InheritConsoleHandles"=dword:00000001