あなたの質問に対する直接的な回答ではありませんが、より良い解決策だと思います:
cron 以外にスクリプトを実行させたくない場合は、web-root の外に置いてください。そうすれば、Web サーバー経由のアクセスはまったくありません。
コマンドを特別なユーザーとしても実行する必要がある場合は、GET
を使用しないでください。 ただし、ユーザーにログインしてログイン セッション (特定のセット セッション変数...) を確認し、そのページにのみスクリプトを含めます。
一般にアクセス可能なスクリプトは次のようになります:
session_start();
if (isset($_SESSION['user']))
{
include '/path/to/script/outside/of/web-root';
}
else
{
die('No access.');
}
$_GET[]
&$_POST[]
連想配列は、スクリプトが Web サーバー経由で呼び出されたときにのみ初期化されます。コマンドラインから呼び出されると、パラメーターは $argv
で渡されます 配列、C と同様。
コマンド ラインからの実行時にスクリプトに渡されるすべての引数の配列が含まれます。
コマンドは次のようになります:
* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234
次に、parse_str() を使用してパラメータを設定およびアクセスします。
<?php
var_dump($argv);
/*
array(4) {
[0]=>
string(27) "/path_to_script/cronjob.php"
[1]=>
string(13) "username=test"
[2]=>
string(13) "password=test"
[3]=>
string(9) "code=1234"
}
*/
parse_str($argv[3], $params);
echo $params['code']; // 1234