我在我的AWS-EC2实例上设置了crontab,使用sudo crontab-e
通过root帐户每分钟点击一次Laravel调度端点:
* * * * * php ~/htdocs/artisan schedule:run >> /dev/null 2>&1
然而,尽管cron日志显示它确实每分钟都在运行:
Jan 26 12:02:01 ip-172-31-28-116 CRON[5057]: (root) CMD (php ~/htdocs/artisan schedule:run >> /dev/null 2>&1)
作业本身没有执行。
直接运行命令php ~/htdocs/artisan schedule:run >> /dev/null 2>&1
会触发作业并运行。
我真的在这里遇到什么问题,我错过了什么?
答案 0 :(得分:2)
添加cron条目时使用绝对路径。应使用应用程序根目录的完整路径设置~/htdocs/artisan
。
当您手动运行命令时,它会起作用,因为您的环境是相应设置的。使用sudo添加cron条目时不是这样。
答案 1 :(得分:1)
所以,我没有注意到cron输出“没有安装MTA,丢弃输出” - 安装MTA(后缀,通过sudo apt-get install postfix
)后,发现对于cronjob,php
没有找不到。
更改命令以使用which php
的输出:
/opt/bitnami/php/bin/php /home/bitnami/htdocs/artisan schedule:run
现在正在运作。
感谢您的帮助!