【发布时间】: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