php - PHP 仅限于文档根目录,而不是文件系统根目录
问题描述
我正在尝试通过 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(); 中发生了变化;
- 我没有尝试 chmodding 我的 Arch 安装的根目录。我担心这会破坏一些东西
当我回realpath("index.php")
显它返回“/webroot/mywebsite/index.php”
这就是我一直在确认我是否可以访问我的根目录的方式,但它没有改变。我不知道我还能尝试什么。我的旧 Debian 安装让我只使用绝对路径。这是我的新 Arch 安装,这是我第一次遇到这种情况。我怀疑这可能是权限问题,但我不想修改我的整个操作系统根目录。还有其他建议吗?谢谢
解决方案
出色地。我很惊讶我在谷歌搜索了 4 个小时后却找不到这个答案,但就是这样。希望我可以为某人省去麻烦。
问题出在此处:/lib/systemd/system/php-fpm.service
找到“ProtectSystem=full”行并将其设置为“false”。Ta-da,我现在到处都可以访问。
推荐阅读
- html - 如何跨列应用字体系列样式
- indexing - DELETE - 没有从索引中删除系列实际上意味着什么
- apache-spark - 使用 Spark Dataframe 以相反的顺序删除相同的单词作为重复项
- android - 无法在 InstrumentedTest 中测试外部服务绑定 Android
- arrays - 支持完整方法链的 Ruby 扩展数组类
- python - 查询集花费太多时间
- java - 在将 Web 元素的大小转换为整数变量时面临问题
- ios - 在单个实例上调用函数?
- java - 如何在终端打印spring boot项目的目录树
- kubernetes - ror:验证“deployment.yaml”时出错:验证数据时出错:服务器找不到请求的资源;