我已经设置了cron作业,它工作正常,但是当我直接运行php文件(从路径/ url)它成功运行,但从cron它没有。但是,我设置另一个非常简单的文件,以确保我的cron命令/路径设置正确我创建了另一个文件,并使用简单的PHP邮件功能,它已成功运行。请向我建议可能的区域。 (我正在使用Cpanel)
答案 0 :(得分:11)
而不是像
那样输入cronjob命令php -f /path_to_script/script.php
像这样输入命令:
curl http://domain.com/yourscript.php
如果你想抑制输出,可以在最后添加> /dev/null
。
所以完整的命令是:
curl http://domain.com/yourscript.php > /dev/null
希望这有帮助!
答案 1 :(得分:1)
作为cURL的替代方案,您可以通过基于文本的浏览器调用脚本。像这样:
lynx -dump http://localhost/script.php
答案 2 :(得分:0)
您不应该有任何相对路径 - 这包括文件和命令。例如,如果要复制文件,则不应仅调用cp
,而是将/bin/cp
与完整路径复制到命令中。要查找完整路径,可以在命令行运行which <cmd>
。
答案 3 :(得分:0)
我遇到了同样的问题。我在cpanel上的laravel项目中使用任务调度。我的命令是
/usr/local/bin/php /home/user_name/public_html/path/to/cron/script
这是版本问题。我的服务器默认php版本是7.1.33,但是在我的项目中php版本是7.2。因此,当我运行schedule命令时,它将使用与我的项目不兼容的php7.1。因此,根据cpanel文档,该命令实际上适用于不同的php版本
/usr/local/bin/ea-php99 /home/shadhinapp/domain_path/path/to/cron/script
。
任何我的cron作业命令是:
/usr/local/bin/ea-php72 /home/user_name/path_to_your_project/artisan schedule:run >> /dev/null 2>&1
答案 4 :(得分:0)