如何确保用户无法运行PHP脚本,并且只能作为cron作业的一部分运行?
答案 0 :(得分:16)
您可以在crontab中设置环境变量。像IS_CRON=1
这样的行可以放在你的crontab的开头,然后在php程序中检查get_env("IS_CRON") == 1
。
当然,您还应该使用文件权限,因为它们不容易被绕过。如果这是作为root的cron的一部分运行的,chown root:root yourscript.php
和chown 700 yourscript.php
。
正如ircmaxell所说,假设你不需要root权限来做你正在做的事情,那么以root用户身份运行会更好。我只是猜测你的设置。
答案 1 :(得分:9)
让PHP脚本检查$_SERVER['REMOTE_ADDR']
是否为空,如果不是,那么让脚本退出而不做任何进一步的操作。
答案 2 :(得分:5)
可能有很多方法可以做到这一点。在我的脑海中,我会说将它放在root拥有的目录中,只有root可读才可能接近达到你想要的效果。
您是否正在寻找专门限制它的流程?如果是这样,使用权限,使其不能被任何这些进程读取。
答案 3 :(得分:2)
我建议在crontab中设置一个环境变量,然后在PHP脚本中检查这个
答案 4 :(得分:1)