确保php脚本仅在本地运行

时间:2013-02-13 09:45:00

标签: php linux

我正在通过linux cronjob运行PHP脚本,我想确保它只能从我指定的IP地址的计算机远程运行,再加上通过cronjob。 现在,我可以检查来自$_SERVER['REMOTE_ADDR']的远程IP地址,但这样做也会通过cronjob停止执行。那么,如何使这两件事都有效?

3 个答案:

答案 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
}

那就是说,你需要记住,远程地址很容易被欺骗,因此依靠它是不好的,至少如果服务器是对互联网开放的话。如果你在本地网络上运行,它会更安全。