gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:36:27 26 4
gpt4 key购买 nike

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com