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 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章