php Cronjobs不是通过www-data运行的

e5nqia27  于 2023-06-04  发布在  PHP
关注(0)|答案(1)|浏览(190)

我正在开发一个部署在Kubernetes集群上的Laravel应用程序,我需要设置一个cronjob来运行php /var/www/html/artisan schedule:run
我用的是php:7.4-fpm-alpine图像。
以下脚本用于生成cronjob:

#!/bin/sh

crontab -l > mycron

touch /var/cronlogs.txt

echo "* * * * * php /var/www/html/artisan schedule:run >> /var/cronlogs.txt 2>&1" >> mycron

crontab mycron

rm mycron

cronjob工作正常,但突然我遇到了一个问题,当cronjob执行一些php artisan命令时,它会以root权限将日志写入storage/logs,这拒绝了www-data写入日志的请求。
我尝试将运行cronjob的用户更改为www-data,但当我这样做时,cronjob不再运行。

我做了什么:

1.我在脚本中将crontab -l > mycron更改为crontab -u www-data -l > mycron,将crontab mycron更改为crontab -u www-data mycron
1.我将/var/spool/cron/crontabs/www-data的所有权更改为www-data:www-data

  1. crond命令
    当我运行crond命令时没有错误,但作业没有启动。
    /var/spool/cron/crontabs/root中的cronjob工作正常(存在更改日志文件的问题)。
    /var/spool/cron/crontabs/www-data中的cronjob不工作。
    如何让cronjobs在www-data上运行?如果这不是解决方案,如何防止php artisan命令由root用户写入日志?
mspsb9vt

mspsb9vt1#

PHP似乎是在root用户下运行的。您可以通过运行ps aux | grep php命令来检查PHP进程。此外,还可以通过运行命令ps aux | grep apache来检查用户的Apache进程

相关问题