运行作业的用户与Web服务器(apache)用户之间的Laravel文件权限不兼容

w8f9ii69  于 2022-12-05  发布在  Apache
关注(0)|答案(2)|浏览(99)

我在VPS上有一个laravel应用程序,配置了apache2和supervisord。文件权限设置如下:

  • 整个项目目录归www-data组所有
  • Apache使用www-data用户
  • 我和主管使用app用户,该用户属于www-data组。

所有的工作都在文件中进行,直到我不得不处理作业和Web服务器处理的请求中的一些文件。

  • 一个用户上传了一个文件,我把这个文件保存在local磁盘的临时目录下。
Storage::disk('local')->put('new-directory/filename', $fileContent);
  • 我派了一个任务来详细说明文件
  • 作业应在细化结束时删除文件:
Storage::disk('local')->delete('new-directory/filename');

但实际上,我得到的是一个权限错误,因为该文件由www-user所有,而主管用来处理队列的app用户没有删除该文件的权限。
我试着使用'public'可见性:->put('new-directory/filename', $fileContent, 'public'),但文件仍然受到保护。下面是ll在目录中的输出:

-rw-r--r-- 1 www-data www-data 60780 Dec  5 14:15 $filename

是否有办法解决运行队列的用户和Web服务器用户之间的文件权限问题?

6jjcrrmo

6jjcrrmo1#

您可以在supervisor的配置文件中添加。

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
anhgbhbe

anhgbhbe2#

手动运行队列时,您可能仍需要以www-data用户身份运行。

sudo -su www-data php artisan queue:work

如果您的日志文件属于www-data,通常情况下就是这样。

相关问题