3

Linux cronjobを介してPHPスクリプトを実行していますが、IPアドレスを指定したコンピューターとcronjobからのみリモートで実行できることを確認したいと思います。これで、からリモートIPアドレスを確認できますが$_SERVER['REMOTE_ADDR']、そうするとcronjobを介した実行も停止します。では、両方を機能させるにはどうすればよいでしょうか。

4

3 に答える 3

3

cronjobをWebルートから外します。

次に、cronがCLI上で実行されているかどうかを確認できます。

if (php_sapi_name() != 'cli') {
    die();
}

Webサーバー上でcronを調整するのは良い考えではありません。その後、すべての人がそれを開始できます。

于 2013-02-13T09:47:50.407 に答える
3

cronケースを処理するためにも、コマンドラインから実行されているかどうかを確認する必要があります

if (php_sapi_name() == 'cli' || $_SERVER['REMOTE_ADDR'] == 'your.ip.add.ress') {
    // allow
}
于 2013-02-13T09:48:38.620 に答える
1

php_sapi_name次のように、IPアドレスのチェックに加えて、関数を使用してローカル(cron)の実行をチェックできます。

if (php_sapi_name() == 'cli' || $_SERVER['REMOTE_ADDR'] == 'xxx.yyy.zzz.vvv') {
    //do your stuff
}
else {
    /show some error
}

とはいえ、リモートアドレスは簡単にスプーフィングされる可能性があるため、少なくともサーバーがインターネットに接続されている場合は、リモートアドレスに依存するのは適切ではないことを覚えておく必要があります。ローカルネットワークで実行している場合は、もう少し安全です。

于 2013-02-13T09:51:46.223 に答える