【问题标题】:PHP restricted to document root, not file system rootPHP 仅限于文档根目录,而不是文件系统根目录
【发布时间】:2020-06-17 01:33:37
【问题描述】:

我正在尝试通过 php 更改位于 /etc/nginx 目录中的文本文件。我正在使用 fopen() 来执行此操作,但是,我无法访问网站根文件夹之外的任何目录。

例如,我将我的网站存储在绝对路径中:/webroot/mywebsite/,如果我尝试读取该文件夹之外的任何内容,例如 /etc/nginx,fopen() 就会死掉。

  • 我试过只使用 ../../etc/nginx 但找不到它
  • 我已尝试以 root 身份运行 PHP
  • 我已尝试将用户“http”添加到根组
  • 我已尝试在 php.ini 中设置 open_basedir 变量
  • 我尝试将 /etc 文件夹符号链接到 /webroot 文件夹,但找不到它
  • 我检查了我的 Nginx 配置,所有 php 配置都没有覆盖 open_basedir
  • 我已经确认我正在编辑的 php.ini 实际上在 phpinfo() 中发生了变化;
  • 我没有尝试对 Arch 安装的根目录进行 chmod 修改。我担心这会破坏某些东西

当我回显realpath("index.php") 时,它会返回“/webroot/mywebsite/index.php”

这是我一直在确认我是否可以访问我的根目录的方式,但它没有改变。我不知道我还能尝试什么。我的旧 Debian 安装让我只使用绝对路径。这是我的新 Arch 安装,这是我第一次遇到这种情况。我怀疑这可能是权限问题,但我不想修改我的整个操作系统根目录。还有其他建议吗?谢谢

【问题讨论】:

  • 为了记录,当我设置 open_basedir 时,我尝试将其设置为 /、../,然后将其注释掉。没有变化
  • 我想 Apache(或您正在使用的任何 Web 服务器)安装了一个扩展,限制了脚本的访问。这在共享网络主机中很常见,因此客户端无法访问彼此的文件。
  • 我检查了我的 nginx.conf 和 php-fpm sn-ps 但没有提到任何关于根目录的内容
  • PHP-FPM 有一些类似的功能可以启用安全的网络空间。

标签: php permissions root fopen open-basedir


【解决方案1】:

嗯。我很惊讶我在谷歌搜索了 4 个小时后却找不到这个答案,但就是这样。希望我能省去别人的麻烦。

问题出在:/lib/systemd/system/php-fpm.service

找到“ProtectSystem=full”行并将其设置为“false”。 Ta-da,我现在到处都可以访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 2021-12-08
    • 2013-01-21
    • 2015-10-07
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多