概述

在测试服测试项目时出现文件下载失败 PHP文件下载失败

排查问题

经过排查发现Nginx给出报错信息 open() "/home/server/nginx/fastcgi_temp/2/10/0000000102" failed (13: Permission denied) while reading upstream Nginx提示我们没有权限操作 Nginx错误日志 然后我们进入目录/home/server/nginx检查fastcgi_temp文件所有者,我们的是root组的root用户 fastcgii所属者 我们再检查Nginx worker的用户组及用户名

ps -ef | grep nginx
# 我们可以看到nginx的worker进程是www用户
root       80246       1  0 10:37 ?        00:00:00 nginx: master process /home/server/nginx/sbin/nginx
www        80247   80246  0 10:37 ?        00:00:00 nginx: worker process
root       82877   82840  0 13:56 pts/7    00:00:00 grep --color=auto nginx
# 查看www用户所在的组,以及组内成员
groups www
#我们的是www用户组的www用户
www:www

解决问题

我们在执行下载时,nginx worker 进程在给fastcgi_temp写入缓存时没有权限 因此,我们只需要给fastcgi_temp目录修改权限为nginx的启动用户www:www

chown -R www:www fastcgi_temp/