在Win7 32位上的
PHP 5.5.4 CLI中运行以下脚本
PHP -r "print_r($argv);" 1 2 3 4 5 6 7 8 9 10 11 12 13 14
我可以看到实际上只解析了8个参数:
Array
(
[0] => -
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
)
Windows或PHP是否将命令行参数的数量限制为8 /总计9?
更新:
在PHP 5.5.7的同一台PC上按预期工作 – >所以至少在Win7上这是一个特定于PHP的问题.
行为的变化取决于脚本是从PHP文件夹运行还是通过路径找到PHP. procmon跟踪似乎表明问题出在Windows上 – 甚至在加载PHP.exe映像之前 – 传递了不同数量的参数:
PHP.exe Process Start SUCCESS Parent PID: 9088,Command line: "\Program Files\PHP\PHP" -r "print_r($argv);" 1 2 3 4 5 6 7,Current directory: C:\
PHP.exe Process Start SUCCESS Parent PID: 9088,Command line: "\program files\PHP\PHP" -r "print_r($argv);" 1 2 3 4 5 6 7 8 9 10 11 12 13 14,Command line: PHP -r "print_r($argv);" 1 2 3 4 5 6 7 8 9 10 11 12 13 14,Current directory: C:\Program Files\PHP\
如果不从路径中获取PHP,则所有参数似乎都可用.