PHP 仅限于文档根目录,而不是文件系统根目录
PHP restricted to document root, not file system root
我正在尝试通过 php 更改位于 /etc/nginx 目录中的文本文件。我正在使用 fopen() 来执行此操作,但是,我无法访问网站根文件夹之外的任何目录。
例如,我将我的网站存储在绝对路径中:/webroot/mywebsite/,如果我试图读取该文件夹之外的任何内容,例如 /etc/nginx,fopen() 就会死掉。
- 我试过只使用 ../../etc/nginx 但找不到它
- 我已经尝试 运行 PHP 作为 root
- 我已经尝试将用户 'http' 添加到根组
- 我试过在 php.ini
中设置 open_basedir 变量
- 我已尝试将 /etc 文件夹符号链接到 /webroot 文件夹,但找不到它
- 我检查了我的 Nginx 配置,所有 php 配置都没有覆盖 open_basedir
- 我已经确认我正在编辑的 php.ini 在 phpinfo();
中确实发生了变化
- 我还没有尝试修改我的 Arch 安装的根目录。我担心这会破坏某些东西
当我回显 realpath("index.php")
时 returns "/webroot/mywebsite/index.php"
这就是我确认我是否可以访问我的根目录的方式,但它并没有改变。我不知道我还能尝试什么。我的旧 Debian 安装让我只使用绝对路径。这是我新安装的 Arch,这是我第一次遇到这种情况。我怀疑这可能是权限问题,但我不想修改我的整个 OS 根目录。还有其他建议吗?谢谢
嗯。我很惊讶我在谷歌搜索了 4 个小时后却找不到这个答案,但它就在这里。希望我能为别人省去麻烦。
问题位于此处:/lib/systemd/system/php-fpm.service
找到行 "ProtectSystem=full" 并将其设置为 "false"。 Ta-da,我现在到处都可以访问了。
我正在尝试通过 php 更改位于 /etc/nginx 目录中的文本文件。我正在使用 fopen() 来执行此操作,但是,我无法访问网站根文件夹之外的任何目录。
例如,我将我的网站存储在绝对路径中:/webroot/mywebsite/,如果我试图读取该文件夹之外的任何内容,例如 /etc/nginx,fopen() 就会死掉。
- 我试过只使用 ../../etc/nginx 但找不到它
- 我已经尝试 运行 PHP 作为 root
- 我已经尝试将用户 'http' 添加到根组
- 我试过在 php.ini 中设置 open_basedir 变量
- 我已尝试将 /etc 文件夹符号链接到 /webroot 文件夹,但找不到它
- 我检查了我的 Nginx 配置,所有 php 配置都没有覆盖 open_basedir
- 我已经确认我正在编辑的 php.ini 在 phpinfo(); 中确实发生了变化
- 我还没有尝试修改我的 Arch 安装的根目录。我担心这会破坏某些东西
当我回显 realpath("index.php")
时 returns "/webroot/mywebsite/index.php"
这就是我确认我是否可以访问我的根目录的方式,但它并没有改变。我不知道我还能尝试什么。我的旧 Debian 安装让我只使用绝对路径。这是我新安装的 Arch,这是我第一次遇到这种情况。我怀疑这可能是权限问题,但我不想修改我的整个 OS 根目录。还有其他建议吗?谢谢
嗯。我很惊讶我在谷歌搜索了 4 个小时后却找不到这个答案,但它就在这里。希望我能为别人省去麻烦。
问题位于此处:/lib/systemd/system/php-fpm.service
找到行 "ProtectSystem=full" 并将其设置为 "false"。 Ta-da,我现在到处都可以访问了。