CentOS 系统下 Laravel 计划任务 PHP artisan schedule:run 不执行,应该如何处理?

服务器是centos系统,现在遇到一个很奇怪的问题,计划任务不能执行,本来设的是定时检查用户表,给当天过生日的用户发生日祝福短信,日志记录计划任务执行了,但没有短信发送,laravel日志中也没有记录,我对计划任务做了检查,目前情况如下:
检查计划任务列表 crontab -l

[root@iZm5e5ber5wsbm9pmb1cmiZ ~]# crontab -l
.
.
.
8 8 * * * php /data/wwwroot/***/artisan schedule:send-birthday-sms >> /dev/null 2>&1

显示列表中有自己设置的计划任务,我没有使用类似* * * * * php artisan schedule:run这个是因为这个每分钟一次,cron日志会特别多,所以直接调用自己写好的计划任务,但可以确定的是没毛病。而且直接复制指令php /data/wwwroot/***/artisan schedule:send-birthday-sms >> /dev/null 2>&1 也是确定正常发送短信的。

检查计划任务状态 service crond status

[root@iZm5e5ber5wsbm9pmb1cmiZ ~]# service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-07-15 11:26:30 CST; 7min ago
  Process: 7500 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 12246 (crond)
   CGroup: /system.slice/crond.service
           └─12246 /usr/sbin/crond -n

Jul 15 11:26:30 iZm5e5ber5wsbm9pmb1cmiZ systemd[1]: Started Command Scheduler.
Jul 15 11:26:30 iZm5e5ber5wsbm9pmb1cmiZ systemd[1]: Starting Command Scheduler...
Jul 15 11:26:30 iZm5e5ber5wsbm9pmb1cmiZ crond[12246]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 38% if used.)
Jul 15 11:26:30 iZm5e5ber5wsbm9pmb1cmiZ crond[12246]: (CRON) INFO (running with inotify support)
Jul 15 11:26:30 iZm5e5ber5wsbm9pmb1cmiZ crond[12246]: (CRON) INFO (@reboot jobs will be run at computer's startup.)

这个就有点多了,看不出来是否有问题,但是检查日志中是有执行记录:

Jul 15 08:01:01 iZm5e5ber5wsbm9pmb1cmiZ run-parts(/etc/cron.hourly)[979]: finished 0anacron
Jul 15 08:08:01 iZm5e5ber5wsbm9pmb1cmiZ CROND[1337]: (root) CMD (php /data/wwwroot/***/artisan schedule:send-birthday-sms >> /dev/null 2>&1)
Jul 15 08:08:01 iZm5e5ber5wsbm9pmb1cmiZ CROND[1341]: (root) CMD (php /data/wwwroot/***/artisan schedule:send-birthday-sms >> /dev/null 2>&1)
Jul 15 08:08:01 iZm5e5ber5wsbm9pmb1cmiZ CROND[1344]: (root) CMD (php /data/wwwroot/***/artisan schedule:send-birthday-sms >> /dev/null 2>&1)

这个就很尴尬了,求大神帮助,为什么计划任务有日志记录,但没有执行~

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

好吧,自己解决了,指令 php 得用绝对路径。

5年前 评论
讨论数量: 3

没人有帮解决吗?求助,真的查不出来原因,而且我在本机的homestead中计划任务是正常的,就是服务器环境下只有日志,没有执行。

5年前 评论

好吧,自己解决了,指令 php 得用绝对路径。

5年前 评论

其实吧 php 放到 /bin/php 就可以了

原因吗,就是每个命令都有可能重置 $PATH 环境变量, 然后就找不到你的 PHP 文件了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!