我正在使用在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
但是从Host上的cron运行共享托管它输出:
array (
)
NULL
array (
0 => 'test.php',
1 => 'arg1'
)
1
我正在与之抗争的代码是遗留代码,并且在很大程度上依赖于$ GLOBALS [“argv”]来解析命令行参数。我无法修改整个代码库来依赖$ _SERVER [“argv”]。
为什么我的所有PHP实例都使用命令行参数填充所有数组,而且Hostgator上的托管php根本没有填充$ GLOBALS [“argv”],这可能是什么原因?
我做了一个解决这个问题的解决方法,但我讨厌当我不知道为什么会发生什么事情时:)
感谢您的任何想法!
答案 0 :(得分:6)
我遇到同样的问题,没有$_SERVER['argv'];
尝试使用php-cli
代替php
:
$job = "* * * * * php-cli /home/user/file.php surf";
它对我有用!