1

重複の可能性:
PHP - 現在の呼び出しが CLI からのものか Web サーバーからのものかを判断するにはどうすればよいですか?

もちろん、UNIX 上で動作するホスティング サーバーで毎日の CRON ジョブを作成しました。

次のコマンドを入れました。

/usr/bin/php /home/myusername/public_html/foo/foo.php

そして、予想通り、これfoo.phpを日常的に実行しました。

しかし、これfoo.phpには重要な情報が含まれており、無作為な人 (無礼ではありません) がhttp://www.mywebsite.com/foo/foo.phpスクリプトにアクセスして実行することは望ましくありません。

では、CRON ジョブと PHP の人間のユーザーを区別するにはどうすればよいでしょうか?

私は最近、CRON ジョブが実行されたときに IP アドレスが指定されていない ($_SERVER['REMOTE_ADDR']が空である) ことを確認しました。しかし、それがまぐれかどうかはわかりません。

Google でこのトピックを検索してみましたが、役に立ちませんでした。

4

2 に答える 2

3

cron スクリプトを Web ルートの外、たとえば/home/myusername/cron.

または、FTP の制限によりこれがオプションでない場合は、cron スクリプトにパラメーターを追加できます。

/usr/bin/php /home/myusername/....../foo.php cron

次に確認します。

if( $_SERVER['argv'][0] != "cron") die("This is a cron script, you cannot access it.");
于 2013-01-06T23:20:41.243 に答える
2

私は過去にこれを使用しました

if (php_sapi_name() != "cli") {
    throw new Exception("someone tried to run this script outside of cli");
}

このphp_sapi_name()関数は、誰がスクリプトを実行しているかを知ることができます。これがドキュメントページです:php_sapi_name

于 2013-01-07T00:51:11.273 に答える