Nginx部署迁移网站遇权限拒绝错误,请求排查原因
问题排查与解决方案
核心原因:文件系统权限配置错误
你遇到的Permission denied错误,说明Nginx或PHP-FPM进程没有足够权限访问站点文件。虽然简单index.php测试正常,但上传的站点代码可能继承了原Apache环境的权限,或是上传过程中权限被错误设置。
具体排查与修复步骤
1. 确认Nginx和PHP-FPM的运行用户
执行以下命令查看进程所属用户:
# 查看Nginx运行用户 ps aux | grep nginx | grep -v grep # 查看PHP-FPM运行用户(以默认www池为例) ps aux | grep php-fpm | grep -v grep
Rocky Linux 9默认配置:
- Nginx运行用户为
nginx - PHP-FPM的www池运行用户为
apache
2. 修复站点目录与文件的权限
(1)设置正确的所有者
将站点根目录的所有者设置为适配Nginx和PHP-FPM的用户组:
chown -R nginx:apache /var/www/test1.home
(2)设置安全的权限值
- 目录权限设为
750(所有者可读可写可执行,组可读可执行,其他无权限) - 文件权限设为
640(所有者可读可写,组可读,其他无权限)
# 递归设置目录权限 find /var/www/test1.home -type d -exec chmod 750 {} \; # 递归设置文件权限 find /var/www/test1.home -type f -exec chmod 640 {} \;
(3)特殊情况:PHP脚本权限(可选)
若部分PHP脚本需要执行权限,可单独调整:
find /var/www/test1.home -name "*.php" -exec chmod 750 {} \;
3. 检查PHP-FPM池配置
确认/etc/php-fpm.d/www.conf中的用户组配置是否匹配:
user = apache group = apache listen.owner = nginx listen.group = nginx
修改后重启PHP-FPM:
systemctl restart php-fpm
4. 重启Nginx服务
权限调整完成后,重启Nginx使配置生效:
systemctl restart nginx
额外验证(仅测试用)
若问题仍存在,可临时将站点目录权限设为777(禁止用于生产环境),如果此时访问正常,说明确实是权限问题,再重新调整为安全的权限值。
内容的提问来源于stack exchange,提问作者bzc0fq
相关产品推荐
相关产品推荐

