使用 crontab -e 编辑时,编辑的都是当前用户的定时任务文件。
里面的任务都会用当前用户身份执行。
Laravel 任务中若创建日志文件,文件也会归 root 所有,但 Web 程序通常以 www 用户运行,无法写入这些日志,导致报错。
正确使用方式:
一种方式是 sudo crontab -u www -e,来编辑www用户的crontab。
另一种方式是 root 的 crontab 任务里通过 sudo -u ,指定用 www 用户身份执行。
1 | * * * * * sudo -u www /www/server/php/74/bin/php /www/wwwroot/yourwebsite/artisan schedule:run >> /dev/null 2>&1 |