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