我有一个CRON job PHP脚本,我刚刚设置了。但是,我注意到PHP文件已执行(没有激活cron作业)。它似乎发生在Google Bot抓取该文件时,因为我注意到以下引擎访问了我的页面:
http://www.google.com/bot.html
我的问题是:
1)是否有可能通过抓取我的网页,它可以执行脚本?
2)如何从Google“隐藏”CRON文件?
3)将此文件放在我的public_html目录以外的其他地方是否明智?
非常感谢!
答案 0 :(得分:2)
1)当然是
2)请参阅robots.txt(http://www.searchtools.com/robots/robots-txt.html)
3)是的。但如果由于某种原因你依赖于通过http守护进程调用它,你可以使用一点技巧。
例如。第一行代码:
if(!isset($_GET['execute'])
exit;
在你的crontab中:
答案 1 :(得分:1)
1)如果文件放在公共网站目录中,那么可以由Googlebot(或任何其他访问者)执行
2)您可以在robots.txt中为其添加Disallow子句。如果你这样做,任何普通用户仍然可以通过访问来执行它。
3)是的。
答案 2 :(得分:0)
你也可以使用php-cli。定义它是否是cron job:
define('_DOING_CRON_', true);
然后在php文件中:
if(_DOING_CRON_ && php_sapi_name() != 'cli'){
die("You cannot get here: this is only cron task.");
}
答案 3 :(得分:0)
Runifus上面的回答为我解决了这个问题,但是Cron作业命令行不适用于?在url中传递查询字符串,如我在此处学到的:Cron Jobs calling a PHP script with variables
它应该是这样的:
http://server.tld/file.php execute=1
php条件也缺少右括号
if(!isset($_GET['execute'])) exit;