我遇到了和其他人类似的问题,但是我尝试了很多方法都没有解决。
我已经创建了一个非常小,简单的测试脚本来显示发生了什么。
<?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)。W32 on x64.
关联:.php = phpfile
ftype: phpfile = " C: ' php ' exe"% 1"——% *
也试过:-
phpfile="C:'php'php.exe" "%1" -- %~2
phpfile="C:'php'php.exe" "%1" %*
phpfile="C:'php'php.exe" "%1" -- "%*"
结果相同。
有什么建议吗?
休解决方案:-
基于此:-
@ARGV在Windows 7中使用ActivePerl是空的
基本上你还需要修改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