Cron作业在cPanel中无法正常工作

8

我已经设置了cron job,它正常工作,但是当我直接运行php文件(从路径/ url)时,它可以成功运行,但是从cron中无法运行。然而,我设置了另一个非常简单的文件来确保我的cron命令/路径正确,我创建了另一个文件并使用了简单的php邮件函数,它可以成功运行。请建议我可能要查找的可能领域。(我正在使用Cpanel)


1
你的 PHP 代码中是否有一些相对路径需要通过 cron 运行,或者包含了一些文件? - Develoger
你能发布一下你的cron job完整命令吗? - alan978
@DušanRadojević 是的,我已经包含了一些文件。 - Manoj
@alan978 所以我的当前路径是 /usr/local/php4/bin/php /home/serverusername/public_html/test_cron/readmails.php,我应该将其更改为 curl http://mydomain.com/test_cron/readmails.php 吗? - Manoj
2
那么拥有 URL 的任何人都可以运行您的 cron - 使用 curl 是一个糟糕的想法。 - Ashley
显示剩余6条评论
5个回答

15

不要像放置cronjob命令一样

php -f /path_to_script/script.php 

输入以下命令:

curl http://domain.com/yourscript.php

如果您想要抑制输出,可以在结尾添加> /dev/null

因此完整的命令是:

curl http://domain.com/yourscript.php > /dev/null

希望这可以帮到你!


终于!这是我找到的唯一可行的答案,非常感谢,好主意。 - AymDev
但它可能无法与附加域一起使用(请使用绝对路径使其在那里工作)。 - Tomasz

1
作为cURL的替代方案,您可以通过基于文本的浏览器调用您的脚本。类似这样的方式:
lynx -dump http://localhost/script.php

1
我遇到了同样的问题。我在cpanel上的laravel项目中使用任务调度。我的命令是:/usr/local/bin/php /home/user_name/public_html/path/to/cron/script
这是一个版本问题。我的服务器默认php版本是7.1.33,但是我的项目中php版本是7.2。因此,当我运行计划任务时,它会采用不兼容我的项目的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

0

你不应该使用相对路径 -- 这包括文件和命令。例如,如果你想要复制一个文件,你不应该只调用cp,而是像/bin/cp这样带有完整路径的命令。要查找完整路径,你可以在命令行中运行which <cmd>


0
curl http://mydomain/auto_push/task.php?p=1

这是我项目中的实时工作代码。请参见下面的图片:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接