PHP - Windows中的命令行参数没有被传递


PHP - command line arguments in Windows not being passed

我遇到了和其他人类似的问题,但是我尝试了很多方法都没有解决。

我已经创建了一个非常小,简单的测试脚本来显示发生了什么。

<?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