在crontab中使用URL运行php文件

时间:2013-02-10 17:28:45

标签: cron crontab cpanel

我想使用cron标签从url运行php文件。 我正在使用虚拟主机,我发出了类似的命令

9 11 9 2 * wget -O /dev/null http://www.domainname.com/cronfile.php

但它不起作用请告诉我为什么这不起作用。 我认为这个命令必须运行“cronfile.php”,我不想从cron收到任何电子邮件。

2 个答案:

答案 0 :(得分:0)

尝试:

9 11 9 2 * wget -O /dev/null 'php -f /path/to/cronfile.php'

或添加到' cronfile.php'

#!/usr/bin/php

并赋予其运行权限:

chmod +x 'cronfile.php'

有关从命令行运行PHP的完整详细信息,请参阅manual

更新1

路径有问题吗?如果您尝试编辑文件vi path/to/file.php,可以打开它吗?如果是这样,请尝试手动运行php -f /path/to/cronfile.php,您是否产生错误?如果没有,请在您的php文件中添加以下内容:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

更新2

我觉得你有点困惑。 为什么要通过网址运行它?你想要实现什么目标?

执行' http://www.domainname.com/cronfile.php该文件不会在本地运行,PHP服务器端HTML嵌入式脚本语言,这意味着当您运行http://www.domainname.com/cronfile.php vi本地crontab时,该文件将在远程服务器(www.domainname.com)而非本地,就像您在浏览器中打开此URL一样。

只要它是静态脚本,最好在本地运行它。在您通过网址运行后,您将code injection使用URL hijacking容易受到攻击。我建议你阅读一下。

更新3

使用$argv添加参数:

php -f /path/to/cronfile.php hello_world

并在php文件中:

echo $argv[0];

答案 1 :(得分:0)

这取决于您的目标网页是否为本地网页。如果是,您可以使用命令php5 /path/to/php/file.php。如果不是,wget方法是正确的,虽然我这样称呼它:/usr/bin/wget --quiet --output-document=/dev/null http://www.server.com/page.php。希望这可以帮助。 (可能是this}

的副本