You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX根目录内子目录文件无法访问,报403 Forbidden错误求助

解决Nginx访问子目录PHP文件返回403 Forbidden的问题

1. 优先排查文件与目录权限

这是触发403错误最常见的原因——Nginx的运行用户(www-data)没有足够权限读取目标文件,或者无法遍历父级目录。

查看权限详情

先执行以下命令,确认目录和文件的权限状态:

# 查看folder目录的权限与归属
ls -ld /var/www/html/folder
# 查看file.php文件的权限与归属
ls -l /var/www/html/folder/file.php

正常情况下需要满足:

  • folder目录至少拥有**rx(读+执行)**权限(权限值推荐755),且所有者/组包含www-data
  • file.php文件至少拥有**r(读)**权限(权限值推荐644),且所有者/组包含www-data

修复权限配置

如果权限不达标,执行以下命令修正:

# 递归将目录和文件的所有者设置为www-data
sudo chown -R www-data:www-data /var/www/html/folder
# 递归设置目录权限为755(所有者读写执行,其他用户读+执行)
sudo chmod -R 755 /var/www/html/folder
# 设置PHP文件权限为644(所有者读写,其他用户只读)
sudo chmod 644 /var/www/html/folder/file.php

2. 验证Nginx配置是否存在访问限制

从你提供的配置来看,当前的server块中没有针对/folder/目录的禁止规则,且location ~ \.php$规则会匹配所有.php后缀的请求(包括子目录中的文件),理论上是生效的。

如果之前修改过配置,记得重启Nginx使变更生效:

sudo systemctl restart nginx

3. 排查SELinux(针对RHEL/CentOS类系统)

如果你使用的是RHEL、CentOS这类默认启用SELinux的系统,可能是SELinux上下文限制了Nginx访问文件。可以先临时关闭SELinux测试:

sudo setenforce 0

如果关闭后能正常访问,再永久调整SELinux上下文:

sudo chcon -R -t httpd_sys_content_t /var/www/html/folder

4. 通过错误日志定位深层问题

如果以上步骤都未解决,查看Nginx错误日志获取更精准的报错信息:

sudo tail -f /var/log/nginx/error.log

再次访问http://localhost/folder/file.php后,日志会明确标注403错误的具体原因(比如权限不足、配置禁止访问等),根据日志内容进一步排查即可。

内容的提问来源于stack exchange,提问作者Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:02:18