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();
}

通过网络服务器调整 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 回答