我正在通过 linux cronjob 运行 PHP 脚本,并且我想确保它只能从我指定的 ip 地址的计算机以及通过 cronjob 远程运行。现在,我可以从 中检查远程 ip 地址$_SERVER['REMOTE_ADDR']
,但这样做也会通过 cronjob 停止执行。那么,如何使这两个工作正常进行?
问问题
844 次
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 回答