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

标签 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)。 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/

相关文章:

PHPUnit : memcache_connect not working in PHPunit test case

php - 在不使用 ON CASCADE 的情况下在 PHP 代码的各行中准备语句

php - 使用插件向 WordPress 添加新页面

python - 使用 'argparse' 而不是 sys.argv

php - Magento 1.9 - 模块中的多个助手

c++ - Windows XP 在创建新线程时速度大大降低

php - .PO 到 .MO - 程序化转换 (PHP)

c# - 在没有计时器的情况下保持 Windows 服务运行

c - C语言中如何通过字符串打开文件

c - 如何声明函数一次传递一个参数 argv[i]?在C中