有一个位于普通目录中的文件夹中的cron作业。
我试图不允许其他任何人访问此文件除了我的服务器以运行cron作业。
我试过了:
order deny,allow
deny from all
allow from 127.0.0.1
但没有运气。我已经完成了将cron作业放在Web根目录之外的根本原因,但无论我和我的主机尝试过什么,我都无法运行它。
感谢。
答案 0 :(得分:3)
这里有两件事:(a)让cronjob运行,(b)访问限制。
<强>的cronjob 强>
新的crontab条目:
*/10 * * * * /usr/bin/php /somewhere/www/cronjob.php
在cronjob.php上设置正确的权限:
chmod +x /somewhere/www/cronjob.php
访问限制
通常,将cronjobs的脚本文件放在www
路径之外是一种很好的做法。
如果您确实需要将它们放在www
中,那么您可以通过访问限制来保护它们。对于Web服务器Apache,这可以通过.htaccess工作,如下所示:
.htaccess
内的 /somewhere/www/
:
<Files "cronjob.php">
Order Allow,Deny
Deny from all
</Files>
这可以保护文件cronjob.php免受外部访问,但允许cron执行该文件。
如果无效,请按照我的分步指南进行操作:https://stackoverflow.com/a/22744360/1163786
答案 1 :(得分:0)
您可以通过在crontab文件中设置环境来限制访问权限
SCRIPT_RUN_ENV = mycronenv
并验证函数中的环境字符串:
if (get_env('SCRIPT_RUN_ENV') != 'mycronenv') {
die('Access denied');
}
或者您可以通过IP限制访问
if( $_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR'] || $_SERVER['REMOTE_ADDR'] != "127.0.0.1" ){
die('Access denied!');
}
您可以通过.htaccess设置脚本文件的权限,例如:
Order deny,allow
Allow from THIS_SERVER_IP
Allow from 127.0.0.1
Deny from all