4

我正在与在 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"] 可能是什么原因?

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

感谢您的任何想法!

4

1 回答 1

6

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

尝试php-cli代替php

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

它对我有用!

于 2013-04-18T23:56:03.093 回答