我想使用cron标签从url运行php文件。 我正在使用虚拟主机,我发出了类似的命令
9 11 9 2 * wget -O /dev/null http://www.domainname.com/cronfile.php
但它不起作用请告诉我为什么这不起作用。 我认为这个命令必须运行“cronfile.php”,我不想从cron收到任何电子邮件。
答案 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}