确保PHP脚本只作为cron作业运行?

时间:2010-10-29 17:34:41

标签: php cron

如何确保用户无法运行PHP脚本,并且只能作为cron作业的一部分运行?

5 个答案:

答案 0 :(得分:16)

您可以在crontab中设置环境变量。像IS_CRON=1这样的行可以放在你的crontab的开头,然后在php程序中检查get_env("IS_CRON") == 1

当然,您还应该使用文件权限,因为它们不容易被绕过。如果这是作为root的cron的一部分运行的,chown root:root yourscript.phpchown 700 yourscript.php


正如ircmaxell所说,假设你不需要root权限来做你正在做的事情,那么以root用户身份运行会更好。我只是猜测你的设置。

答案 1 :(得分:9)

让PHP脚本检查$_SERVER['REMOTE_ADDR']是否为空,如果不是,那么让脚本退出而不做任何进一步的操作。

答案 2 :(得分:5)

可能有很多方法可以做到这一点。在我的脑海中,我会说将它放在root拥有的目录中,只有root可读才可能接近达到你想要的效果。

您是否正在寻找专门限制它的流程?如果是这样,使用权限,使其不能被任何这些进程读取。

答案 3 :(得分:2)

我建议在crontab中设置一个环境变量,然后在PHP脚本中检查这个

答案 4 :(得分:1)

为cron作业创建用户,并设置脚本的权限,使其只能以此用户身份运行。当然,您需要将脚本放在该用户的crontab中,您可以通过以该用户身份登录并运行crontab来完成该操作。只是不要将该用户的密码提供给任何其他用户......

起初我还在考虑设置一个环境变量来阻止从网上运行这个脚本......但是只是不将脚本放在Web服务器查找网站页面的空间中,也会这样做。

并没有什么能阻止随机用户首先设置环境变量然后运行脚本。