You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的执行环境完全不一样。

修复步骤
    1. 先获取PHP解释器的绝对路径:cron运行时不会加载用户shell的环境变量,直接写php大概率找不到命令,先在终端执行which php拿到完整路径,常见EC2环境下PHP7.4的路径为/usr/bin/php或/opt/remi/php74/root/usr/bin/php,以你实际执行命令返回的结果为准。
    1. 编辑crontab替换错误条目:执行crontab -e,把原来的错误配置删掉,替换成正确配置。举个实际样例,假设上一步拿到的PHP路径是/usr/bin/php,配置内容如下:
* * * * * cd /var/www/html && /usr/bin/php artisan schedule:run >> /var/www/html/storage/logs/schedule_cron.log 2>&1

暂时不要把输出重定向到/dev/null,先把运行日志写到Laravel的storage日志目录,方便排查后续可能的权限、路径问题,等任务稳定运行后再调整输出规则。

    1. 确认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
    1. 校验目录权限:cron执行时使用的是你配置crontab对应的用户身份,要保证该用户对项目目录有足够权限,尤其是storage、bootstrap/cache目录需要写入权限,权限不足时Laravel无法启动调度逻辑:
# 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. 验证运行结果:等待1分钟后,查看刚才配置的日志文件/var/www/html/storage/logs/schedule_cron.log,正常会输出[202x-xx-xxTxx:xx:xx+00:00] Running scheduled command: ...类的内容,同时你写的booking:cron命令会按每分钟的频率执行。
额外注意事项
  • 你提到的调度代码路径拼写有误,正确的文件路径是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:24:45