crontab www用户定时任务不执行

  1. 通过命令 crontab -u www -e创建的定时任务就是不执行

    五个星 cd /data/wwwroot/laravel && php artisan schedule:run >> /dev/null 2>&1
  2. 单独执行

    cd /data/wwwroot/laravel && php artisan schedule:run >> /dev/null 2>&1

    是能够执行的,执行逻辑是没问题的

  3. 查看cron日志/var/log/cron没发现异常

    Oct  8 11:26:01 VM-25-18-centos CROND[8472]: (www) CMD (cd /data/wwwroot/laravel && php artisan schedule:run >> /dev/null 2>&1)
  4. 看到网上说的更改/usr/bin/crontab权限,权限充足不需要更改

    -rwsr-xr-x    1 root root      57664 Nov 20  2018 crontab
  5. 后来 crontab -u www -e 添加一个测试任务
    * * * * * echo "11" >> /data/wwwlogs/cron.txt
    执行了,为啥laravel的任务不执行呢..

解决了
加上 php 的完整路径好了,/usr/local/php/bin/php,什么原因还是懵逼,php明明是可以命令行执行的。

* * * * * cd /data/wwwroot/laravel && /usr/local/php/bin/php artisan schedule:run >> /dev/null 2>&1
welcome come back
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

本身运行php能执行是当前登录这个用户的环境执行,会自动查找PATH路径,而crontab,你使用的是www用户并没有相关环境变量,如果你为www创建了home目录并且设置了相关环境变量也是,www用户应该就可以直接执行php命令了,相关创建用户并设置默认的shell的初始配置文件路径在/etc/skel中,可以查看下。

3年前 评论
讨论数量: 7

再确认一下Kernel里面的代码,或者去laravel log看看有没有相应error log

3年前 评论
php_yt (楼主) 3年前

因为cron的环境变量跟系统的是不一样的,系统里面有php的环境变量,但是cron的环境变量是空白的。如果你是docker的话,更忧伤。

3年前 评论

目测是权限问题导致的,www 用户没有 artisan 的执行权限

3年前 评论

是不是最后漏了&?

3年前 评论

权限问题,你可以看下日志,应该是这个路径:/var/log/cron

php 需要放到 /bin/php 这个位置, crontab 的环境变量不包含修改 PATH, 具体哪里定义的, 忘了

3年前 评论

本身运行php能执行是当前登录这个用户的环境执行,会自动查找PATH路径,而crontab,你使用的是www用户并没有相关环境变量,如果你为www创建了home目录并且设置了相关环境变量也是,www用户应该就可以直接执行php命令了,相关创建用户并设置默认的shell的初始配置文件路径在/etc/skel中,可以查看下。

3年前 评论

考虑下是不是MacOS系统升级的问题。需要设置cron命令的执行文件的权限

Laravel

3年前 评论

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