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

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

  • 整个项目目录归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用户没有权限删除该文件。文件。

我尝试使用“公开”可见性:->put('new-directory/filename',$fileContent,'public'),但是文件仍然受到保护。这是目录中ll的仓库:

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

是否有一种方法可以解决运行队列的用户与Web服务器用户之间的文件权限问题?

wnyangbo 回答:Laravel文件权限在运行作业的用户与Web服务器(Apache)用户之间不兼容

您可以在超级用户中添加配置文件。

[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
本文链接:https://www.f2er.com/2969830.html

大家都在问