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

Ubuntu 20.04下PHP无法读取public_html上层目录文件问题咨询

问题排查与解答

1. 浏览器触发的PHP程序能否访问public_html目录外的文件

默认是可以的,PHP本身没有强制限制只能访问站点根目录(public_html)内的文件,访问限制通常来自两个配置项:

  • open_basedir:php.ini中配置的参数,会把PHP脚本可访问的文件范围限制在指定的目录列表中。很多站点配置会默认将该参数设置为仅包含public_html目录和系统临时目录,若未把上层目录加入配置,就会导致访问被拦截。你可以在脚本中加入phpinfo();查看当前环境的open_basedir配置值,注意部分环境会在站点的PHP-FPM池配置、Apache虚拟主机配置里单独覆盖该参数,不只有全局php.ini会生效。
  • 文件系统权限:Ubuntu 20.04默认环境下,Apache、PHP-FPM的运行用户都是www-data,该用户需要拥有目标文件的读权限,以及目标文件所在所有父级目录的执行权限(进入目录的权限),否则也会出现访问失败。

2. 你的报错原因排查

你当前贴出的代码中使用的是绝对路径/var/www/domain.com/file.txt,但报错信息显示的是fopen(file.txt),说明实际运行的代码和你贴出的代码不一致,这是首要排查点:

  • 优先确认你是否在代码中误写为相对路径fopen("file.txt", "r"):如果使用相对路径,PHP会以当前脚本的工作目录(默认是脚本所在的public_html目录)为基准查找文件,就会尝试读取/var/www/domain.com/public_html/file.txt,自然找不到对应文件。
  • 如果确认代码确实使用了正确的绝对路径,再排查权限问题,执行以下命令完成授权即可:
# 给目标文件分配www-data用户组读权限
sudo chown :www-data /var/www/domain.com/file.txt
sudo chmod g+r /var/www/domain.com/file.txt
# 给上层目录分配www-data用户组进入权限
sudo chmod g+x /var/www/domain.com/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:57:04