Laravel 5.5在GoDaddy共享主机上Cron Job无法运行求助
解决GoDaddy共享主机上Laravel 5.5 Cron Job不运行的问题
我之前帮朋友排查过类似的GoDaddy Laravel Cron问题,大概率是这几个地方没配置对,你一步步来检查:
1. 确保Cron命令使用绝对路径(最常见的坑)
GoDaddy共享主机的PHP和Laravel项目路径都需要用绝对路径,不能用相对路径。你需要:
- 先找到你的PHP可执行文件绝对路径:可以通过创建一个
phpinfo.php文件(内容<?php phpinfo(); ?>),访问后找到_SERVER["PATH"]里的PHP路径;或者如果能SSH登录,运行which php直接获取。 - 然后构造正确的Cron命令,格式如下:
/path/to/your/php /home/your_cpanel_username/public_html/artisan schedule:run >> /dev/null 2>&1
替换/path/to/your/php为实际的PHP路径,your_cpanel_username为你的GoDaddy cPanel用户名。
2. 检查Kernel.php中的代码错误
你写的调度任务里,new Video;可能存在命名空间问题:
- 打开
app/Console/Kernel.php,顶部需要引入Video模型的命名空间:
use App\Video;
如果没加这行,Laravel会找不到Video类,导致任务静默失败。
3. 开启Cron日志排查错误
把Cron的输出重定向到日志文件,而不是/dev/null,这样能看到具体错误:
修改Cron命令为:
/path/to/your/php /home/your_cpanel_username/public_html/artisan schedule:run >> /home/your_cpanel_username/public_html/storage/logs/cron.log 2>&1
等待几分钟后,查看storage/logs/cron.log文件,里面会显示任务运行的详细信息,比如权限不足、类找不到等错误。
4. 验证环境变量和权限
- 确保你的
.env文件权限正确,设置为644(不要设置成777,会有安全风险),Cron进程需要能读取这个文件来加载Laravel环境配置。 - 如果你的项目用了生产环境,在Cron命令后加上
--env=production,确保加载正确的环境配置:
/path/to/your/php /home/your_cpanel_username/public_html/artisan schedule:run --env=production >> /dev/null 2>&1
5. 手动测试Cron命令
如果能SSH登录到GoDaddy主机,直接运行你构造的Cron命令,看实时输出:
/path/to/your/php /home/your_cpanel_username/public_html/artisan schedule:run
如果命令运行失败,会直接显示错误信息,比如“Class 'Video' not found”或者“Permission denied”,这样能快速定位问题。
6. 确认GoDaddy Cron的时间设置
在GoDaddy的Cron Job设置界面,确保时间配置为每分钟执行:
- 分钟:
* - 小时:
* - 日:
* - 月:
* - 星期:
*
按照上面的步骤排查,基本能解决大部分GoDaddy共享主机上Laravel Cron不运行的问题。
内容的提问来源于stack exchange,提问作者Khawar Raza
相关产品推荐
相关产品推荐

