$ GLOBALS [" argv"]和$ argv为空,$ _SERVER [" argv"]就好了

时间:2012-10-10 12:55:55

标签: php

我正在使用在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”],这可能是什么原因?

我做了一个解决这个问题的解决方法,但我讨厌当我不知道为什么会发生什么事情时:)

感谢您的任何想法!

1 个答案:

答案 0 :(得分:6)

我遇到同样的问题,没有$_SERVER['argv'];

尝试使用php-cli代替php

$job = "* * * * * php-cli /home/user/file.php surf";

它对我有用!