我正在通过linux cronjob运行PHP脚本,我想确保它只能从我指定的IP地址的计算机远程运行,再加上通过cronjob。
现在,我可以检查来自$_SERVER['REMOTE_ADDR']
的远程IP地址,但这样做也会通过cronjob停止执行。那么,如何使这两件事都有效?
答案 0 :(得分:3)
将cronjob放入网络根目录。
然后你可以检查cron是否在cli上运行:
if (php_sapi_name() != 'cli') {
die();
}
通过网络服务器调整你的cron并不是一个好主意。然后每个人都可以启动它。
答案 1 :(得分:3)
您还需要检查它是否也从命令行运行以处理cron案例
if (php_sapi_name() == 'cli' || $_SERVER['REMOTE_ADDR'] == 'your.ip.add.ress') {
// allow
}
答案 2 :(得分:1)
除了检查IP地址之外,您还可以使用php_sapi_name
函数来检查本地(cron)执行,如下所示:
if (php_sapi_name() == 'cli' || $_SERVER['REMOTE_ADDR'] == 'xxx.yyy.zzz.vvv') {
//do your stuff
}
else {
/show some error
}
那就是说,你需要记住,远程地址很容易被欺骗,因此依靠它是不好的,至少如果服务器是对互联网开放的话。如果你在本地网络上运行,它会更安全。