我正在与在 Hostgator 共享主机上运行的 PHP CLI 的一个(可能)简单问题作斗争。一个简单的代码:
<?php
var_dump($argv);
var_dump($GLOBALS["argv"]);
var_dump($_SERVER["argv"]);
var_dump(ini_get("register_argv_argv"));
?>
当在我的本地机器以及其他几个 php 实例上运行时:
php test.php arg1
如预测的那样正确输出:
array (
0 => 'test.php',
1 => 'arg1'
)
array (
0 => 'test.php',
1 => 'arg1'
)
array (
0 => 'test.php',
1 => 'arg1'
)
1
但是从 Hostgator 共享主机上的 cron 运行它输出:
array (
)
NULL
array (
0 => 'test.php',
1 => 'arg1'
)
1
我正在使用的代码是遗留代码,并且严重依赖 $GLOBALS["argv"] 来解析命令行参数。我无法修改整个代码库以改为依赖 $_SERVER["argv"] 。
为什么我的所有 PHP 实例都用命令行参数填充所有数组,而 Hostgator 上的托管 php 根本不填充 $GLOBALS["argv"] 可能是什么原因?
我做了一个解决方法来解决这个问题,但是当我不知道为什么会发生某些事情时我讨厌:)
感谢您的任何想法!