我遇到了与其他一些人类似的问题,但是我尝试了多种方法都没有解决。
我已经创建了一个非常小、简单的测试脚本来展示会发生什么。
<?php
print "In Script!\n";
var_dump($argv);
?>
好的,现在我可以使用以下命令运行它:-
C:\TEMP> c:\php\php.exe hughTest.php 1 2 3 4
输出:-
In Script!
array(4) {
[0]=>
string(12) "hughTest.php"
[1]=>
string(1) "1"
[2]=>
string(1) "2"
[3]=>
string(1) "3"
}
哪个好,这就是我所期待的。现在只需将脚本作为 .php 运行:-
C:\TEMP> hughTest.php 1 2 3
输出:-
In Script!
array(1) {
[0]=>
string(20) "C:\temp\hughTest.php"
}
这不是我所期望的!参数去哪了?
我已经检查/尝试修改文件关联,但输出没有变化。我还尝试了几个不同版本的 PHP。 (5.4 和 5.5)。 x64 上的 w32。
关联:.php = phpfile
ftype: phpfile="C:\php\php.exe""%1"-- %*
也尝试过:-
phpfile="C:\php\php.exe" "%1" -- %~2
phpfile="C:\php\php.exe" "%1" %*
phpfile="C:\php\php.exe" "%1" -- "%*"
结果都一样。
关于下一步要看的地方有什么建议吗?
休
最佳答案
解决方案:-
基于此:-
@ARGV is empty using ActivePerl in Windows 7
基本上你还需要修改Windows注册表
[HKEY_CLASSES_ROOT/Applications/php.exe/shell/open/command]
change the data to something like: "c:\php\php.exe" "%1" %*
[HKEY_CLASSES_ROOT\php_auto_file\shell\open\command]
change the data to something like: "c:\php\php.exe" "%1" %*
[HKEY_CLASSES_ROOT\phpfile\shell\open\command]
change the data to something like: "c:\php\php.exe" "%1" %*
现在导致:-
C:\temp>hughTest.php 1 2 3
In Script!
array(4) {
[0]=>
string(20) "C:\temp\hughTest.php"
[1]=>
string(1) "1"
[2]=>
string(1) "2"
[3]=>
string(1) "3"
}
Hugh
关于PHP - Windows 中的命令行参数未被传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23821132/