cron 作业在 cpanel 中无法正常工作

Posted

技术标签:

【中文标题】cron 作业在 cpanel 中无法正常工作【英文标题】:Cron job is not working properly in cpanel 【发布时间】:2012-10-13 09:43:42 【问题描述】:

我已经设置了 cron 作业,它工作正常,但是当我直接运行 php 文件(来自路径/url)时,它成功运行,但从 cron 却没有。但是我设置了另一个非常简单的文件以确保我的 cron 命令/路径设置正确我创建了另一个文件并使用了简单的 php 邮件功能并且它运行成功。请建议我研究它的可能领域。 (我正在使用 Cpanel)

【问题讨论】:

您是否有一些想要通过 cron 运行的 php 代码中的相对路径,也许包括一些? 你能从 cron 作业中发布你的完整命令吗? 尝试使用控制台运行 PHP 文件(如 putty)并检查是否有任何错误。问题可能出在 include() 或 require() 文件路径上。 @DušanRadojević 是的,我确实包含了一些文件 那么任何拥有该 URL 的人都可以运行您的 cron - 使用 curl 是一个糟糕的主意。 【参考方案1】:

而不是像

那样放入 cronjob 命令
php -f /path_to_script/script.php 

这样输入命令:

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

如果你想抑制输出,可以在末尾添加> /dev/null

所以完整的命令是:

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

希望这会有所帮助!

【讨论】:

终于!这是我找到的唯一可行的答案,非常感谢,好主意 它可能不适用于插件域(使用绝对路径使其在那里工作)。【参考方案2】:

作为 cURL 的替代方法,您可以通过基于文本的浏览器调用您的脚本。像这样的:

lynx -dump http://localhost/script.php

【讨论】:

【参考方案3】:

你不应该有任何相对路径——这包括文件和命令。例如,如果要复制文件,则不应只调用cp,而应调用带有完整路径/bin/cp 命令。要查找完整路径,您可以在命令行中运行which <cmd>

【讨论】:

【参考方案4】:

我也遇到过同样的问题。我在 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

【讨论】:

【参考方案5】:
curl http://mydomain/auto_push/task.php?p=1

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

【讨论】:

以上是关于cron 作业在 cpanel 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

在 cpanel 中使用 cron 作业运行 php 脚本

cPanel cron 作业,没有指定输入文件?

CRON 作业不断出错

cron 作业运行 url cpanel

工作日的 CPanel Cron Job 设置

cron作业出错,但在shell上工作正常