Manjaro环境Nginx访问站点报13:Permission denied 403错误如何解决
Nginx 403 Forbidden问题解决步骤
1. 修正属主修改命令
你之前执行的chmod -R http:http exam/是错误命令:chmod用于修改文件权限,修改文件/目录属主需要用chown命令,正确操作如下:
# 先进入/usr/share/nginx/html目录执行 cd /usr/share/nginx/html chown -R http:http exam/ # 同时统一设置权限:目录给755权限,文件给644权限 find exam/ -type d -exec chmod 755 {} \; find exam/ -type f -exec chmod 644 {} \;
修改完成后重启Nginx生效:
systemctl restart nginx
2. 检查软链接与上级目录权限
你提供的权限信息显示exam是软链接(权限位开头为l),需要确认软链接指向的实际目录的属主和权限,同时确认所有上级目录都给http用户开放了执行权限(x权限是目录访问的必要条件):
# 查看软链接指向的实际路径 readlink -f /usr/share/nginx/html/exam # 逐级检查路径所有节点的权限 namei -l /usr/share/nginx/html/exam/index.php
如果上级目录没有x权限,比如/usr/share/nginx/html权限不对,执行:
chmod o+x /usr/share/nginx /usr/share/nginx/html
3. 确认PHP-FPM运行用户
如果php-fpm的运行用户和Nginx不一致,也会导致PHP文件解析权限不足:
# 查看php-fpm当前运行用户 ps aux | grep php-fpm
如果运行用户不是http,编辑php-fpm的www.conf配置(默认路径为/etc/php-fpm.d/www.conf),修改以下参数:
user = http group = http listen.owner = http listen.group = http
修改后重启php-fpm服务:
systemctl restart php-fpm
4. 检查AppArmor限制
Manjaro默认启用AppArmor服务,可能会限制Nginx的目录访问权限,可临时关闭测试:
systemctl stop apparmor systemctl restart nginx php-fpm
如果访问恢复正常,修改AppArmor的Nginx规则,开放对应目录的访问权限即可。
5. 修正路径匹配问题
你的配置中root已经指定为/usr/share/nginx/html/exam,访问localhost:9000/exam会让Nginx尝试查找/usr/share/nginx/html/exam/exam路径下的文件,如果你实际需要访问的是exam目录下的内容,直接访问localhost:9000/即可,或者修改root配置为/usr/share/nginx/html。
内容的提问来源于stack exchange,提问作者ersincebi
相关产品推荐
相关产品推荐

