我已经设置了 cron 作业,它工作正常,但是当我直接运行 php 文件(从路径/url)时,它成功运行,但从 cron 却没有。但是我设置了另一个非常简单的文件以确保我的 cron 命令/路径设置正确我创建了另一个文件并使用了简单的 php 邮件功能并且它运行成功。请建议我研究它的可能领域。(我正在使用 Cpanel)
5 回答
而不是像
php -f /path_to_script/script.php
像这样输入命令:
curl http://domain.com/yourscript.php
如果你想抑制输出,你可以> /dev/null
在最后添加。
所以完整的命令将是:
curl http://domain.com/yourscript.php > /dev/null
希望这可以帮助!
作为 cURL 的替代方法,您可以通过基于文本的浏览器调用您的脚本。像这样的东西:
lynx -dump http://localhost/script.php
您不应该有任何相对路径——这包括文件和命令。例如,您不应仅cp
在要复制文件时调用,而应调用命令/bin/cp
的完整路径。要找出完整路径,您可以which <cmd>
在命令行运行。
我遇到了同样的问题。我在 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