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

时间:2014-05-23 04:47:36

标签: php windows argv

我遇到了与其他人类似的问题,但是我已经尝试了多项无法解决问题的事情。

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

<?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 =&#34; C:\ php \ php.exe&#34; &#34;%1&#34; - %*

也尝试过: -

phpfile="C:\php\php.exe" "%1" -- %~2

phpfile="C:\php\php.exe" "%1" %*

phpfile="C:\php\php.exe" "%1" -- "%*"

所有结果都相同。

关于下一步要去哪儿的建议?

1 个答案:

答案 0 :(得分: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