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 に答える