文章目录
crontab 脚本默认是root用户运行,在Laravel项目中,如果运行PHP-FPM的用户是非root, 比如www ,而定时任务又是root用户执行的,,会导致生成的laravel日志文件属于root,进而www用户无权限写入日志。
crontab常用命令
crontab -u //指定某个用户的cron服务
crontab -l //列出某个用户的cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
以上命令默认的用户是root,如果想指定某个用户,方式如下
crontab -u www -e //编辑www用户的命令
crontab -u www -l //查看www用户的命令列表
指定非root用户
如果直接编辑www的crontab命令,会发现其中的命令并没有执行,例如:
* * * * * /usr/bin/php /{laravel项目根目录}/artisan schedule:run >> /dev/null 2>&1
发现并不执行,而放在crontab -e
中的却可以正常执行。
此时查看/var/logs/cron
日志发现如下报错信息:
Apr 11 13:15:01 izuf60div2wtc0k655uschz CROND[2174]: (www) CMD (/usr/bin/php /{laravel项目根目录}/artisan schedule:run >> /dev/null 2>&1)
Apr 11 13:15:01 izuf60div2wtc0k655uschz CROND[2174]: (CRON) ERROR chdir failed (/home/www): No such file or directory
发现是由于指定了www用户的定时任务后,运行crontab命令失败了。原因是:找不到/home/www
目录
在/home/www
创建对应目录后,命令正常执行, 日志权限问题也随之解决。
(完)
参考:
https://blog.csdn.net/cuiliwu/article/details/82623815
https://learnku.com/articles/6775/about-laravel-log-permissions