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"] をまったく設定しない理由は何ですか?
この問題に対処するための回避策を作成しましたが、何かが起こっている理由がわからないときは嫌いです:)
アイデアをありがとう!