Laravel 8在AWS EC2 Linux中Cron调度任务无法自动执行
核心故障原因
你写的crontab条目存在路径语法错误,这是任务无法自动触发的根本原因:
你当前配置的cd /var/www/html/artisan schedule:run逻辑完全错误——cd命令的作用是切换到目录,但artisan是Laravel项目根目录下的PHP可执行脚本文件,不是目录,cron执行到这一步会直接报路径错误,后续的schedule:run根本不会运行。你手动在CLI执行能成功,是因为你手动执行时已经处于正确的工作目录,且正确调用了PHP解释器运行artisan文件,和cron的执行环境完全不一样。
修复步骤
- 先获取PHP解释器的绝对路径:cron运行时不会加载用户shell的环境变量,直接写
php大概率找不到命令,先在终端执行which php拿到完整路径,常见EC2环境下PHP7.4的路径为/usr/bin/php或/opt/remi/php74/root/usr/bin/php,以你实际执行命令返回的结果为准。
- 先获取PHP解释器的绝对路径:cron运行时不会加载用户shell的环境变量,直接写
- 编辑crontab替换错误条目:执行
crontab -e,把原来的错误配置删掉,替换成正确配置。举个实际样例,假设上一步拿到的PHP路径是/usr/bin/php,配置内容如下:
- 编辑crontab替换错误条目:执行
* * * * * cd /var/www/html && /usr/bin/php artisan schedule:run >> /var/www/html/storage/logs/schedule_cron.log 2>&1
暂时不要把输出重定向到
/dev/null,先把运行日志写到Laravel的storage日志目录,方便排查后续可能的权限、路径问题,等任务稳定运行后再调整输出规则。
- 确认cron服务处于运行状态:AWS EC2不同发行版的cron服务名有区别,执行对应命令检查状态,未启动则设置开机自启并启动服务:
# Amazon Linux 2/CentOS/RHEL 系发行版 systemctl status crond # 状态不是active(running)就执行下面两条 systemctl enable crond systemctl start crond # Ubuntu/Debian 系发行版 systemctl status cron # 状态不是active(running)就执行下面两条 systemctl enable cron systemctl start cron
- 校验目录权限:cron执行时使用的是你配置crontab对应的用户身份,要保证该用户对项目目录有足够权限,尤其是
storage、bootstrap/cache目录需要写入权限,权限不足时Laravel无法启动调度逻辑:
- 校验目录权限:cron执行时使用的是你配置crontab对应的用户身份,要保证该用户对项目目录有足够权限,尤其是
# Nginx环境执行,Apache环境把nginx替换成apache即可 chown -R nginx:nginx /var/www/html chmod -R 755 /var/www/html chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache
- 验证运行结果:等待1分钟后,查看刚才配置的日志文件
/var/www/html/storage/logs/schedule_cron.log,正常会输出[202x-xx-xxTxx:xx:xx+00:00] Running scheduled command: ...类的内容,同时你写的booking:cron命令会按每分钟的频率执行。
- 验证运行结果:等待1分钟后,查看刚才配置的日志文件
额外注意事项
- 你提到的调度代码路径拼写有误,正确的文件路径是
app/Console/Kernel.php,注意是Kernel不是Kernal,不过你手动执行schedule:run能正常触发命令,说明文件本身命名和代码逻辑没问题,只是手滑打错了路径名。 - 你在
$commands数组里注册命令类时,类名前的前置反斜杠可以去掉,写成App\Console\Commands\BookingCron即可,带反斜杠虽然不影响运行,但不符合Laravel的默认写法规范。 - 如果后续排查发现cron能触发schedule:run但命令不执行,可以直接运行
php artisan booking:cron确认命令本身没有逻辑报错。
内容的提问来源于stack exchange,提问作者zubair syslab
相关产品推荐
相关产品推荐

