基于Docker在Nginx上部署DVWA遇php-fpm.sock权限拒绝问题求助
Docker部署Nginx+DVWA及权限问题排查
已执行操作步骤
- 安装Docker(根据系统选择对应命令,如Debian/Ubuntu:
apt install docker.io;CentOS:yum install docker) - 拉取Nginx镜像:
docker pull nginx:latest - 启动容器并绑定端口:
docker run -d -p 8000:80 --name nginx-dvwa nginx,本地访问http://localhost:8000确认Nginx正常运行 - 进入容器终端:
docker exec -it nginx-dvwa /bin/bash - 克隆DVWA到Nginx网页根目录:
git clone https://github.com/digininja/DVWA.git /usr/share/nginx/html/DVWA - 编辑Nginx默认配置文件:
vi /etc/nginx/conf.d/default.conf,配置PHP解析规则 - 确认PHP版本兼容:DVWA要求PHP 7.4+,已验证容器内PHP版本符合要求
当前遇到的问题
- 前期日志提示
/run/php/php8.2-fpm.sock不存在,已通过安装PHP-FPM解决该问题 - 现日志持续报错:
/run/php/php8.2-fpm.sock权限拒绝,已手动检查文件权限但问题未解决
可行排查/修复方案
调整PHP-FPM sock文件权限配置
- 查看当前sock文件权限:
ls -l /run/php/php8.2-fpm.sock - 编辑PHP-FPM池配置文件:
vi /etc/php/8.2/fpm/pool.d/www.conf,设置:listen.owner = www-data listen.group = www-data listen.mode = 0660 - 重启PHP-FPM服务:
service php8.2-fpm restart
- 查看当前sock文件权限:
验证Nginx运行用户权限
- 查看Nginx运行用户:
grep user /etc/nginx/nginx.conf,默认应为www-data - 确保该用户属于PHP-FPM sock文件的用户组,若未加入可执行:
usermod -aG www-data nginx(若Nginx用户不是www-data)
- 查看Nginx运行用户:
临时测试权限(仅用于定位问题)
- 执行
chmod 777 /run/php/php8.2-fpm.sock,若访问正常,说明是权限配置问题,后续再调整为安全权限(如chmod 660)
- 执行
切换为TCP端口连接PHP-FPM
- 修改PHP-FPM配置,将
listen = /run/php/php8.2-fpm.sock改为listen = 127.0.0.1:9000,重启PHP-FPM - 同步修改Nginx配置,将
fastcgi_pass unix:/run/php/php8.2-fpm.sock;替换为fastcgi_pass 127.0.0.1:9000;,重启Nginx:service nginx restart
- 修改PHP-FPM配置,将
内容的提问来源于stack exchange,提问作者Younes Lamhamedi Cherradi
相关产品推荐
相关产品推荐

