php - NGINX/PHP 无法访问根目录外的文件
问题描述
我刚刚在 openbsd 服务器上安装了 nginx 和 php72 来建立一个网站。我在 /var/www/html 中有我的网站根目录,并且想要访问我存储在 /var/cache/ 中的一些 XML 文件。问题是,当我尝试检查 file_exists('var/cache/file.xml') 时,它说它不存在,但它确实存在!
在一些“调试”和使用 $_SERVER['DOCUMENT_ROOT'] 之后,说路径是根目录是: /www/html 但服务器上的真实路径是 /var/www/html 所以不知何故 PHP/NGINX无法检测到我需要的 /var,因为我放了我的 xml 文件。
我可以在 php.ini 或 php-fpm.conf 中输入一些内容以使 php 能够读取此路径吗?
希望我确实为您解释了正确的内容,并且您理解我在这里的意思。
解决方案
我相信这是因为 OpenBSD 的 nginx 中内置了 chroot。
https://man.openbsd.org/OpenBSD-5.4/nginx.8
尝试使用-u
标志启动 nginx。它将禁用 chroot/jail 并允许在 nginx 中运行的脚本访问文件系统上的其他路径。
从文档中:
默认情况下,nginx 将 chroot(2) 到运行守护程序的用户的主目录,通常是“www”,或者到 nginx.conf 中用户的主目录。-u 选项禁用此行为,并将 nginx 返回到原始的“不安全”行为。
推荐阅读
- html - 如何将 word 文档(.docx 或 .rtf)转换为响应式 html 以用于移动和 Web 视图
- android - 在调用 BindProcessToNetwork(network) 之后。APP永远不会通过移动数据连接到互联网
- html - 如何索引从 Apache Nutch 到 Solr 的爬网“html”?
- ruby - 如何在 minitest 中存根写入文件
- amazon-web-services - 如何设置 AWS S3 策略,其中 Principals 是特定 aws 账户中的所有委托人
- reactjs - 如何将此 useEffect firebase onAuthStateChanged 函数转换为类?
- java - Apache PDFBox 错误访问权限
- ruby-on-rails - Ruby on Rails 6 加载模块
- vue.js - 如何动态定义css选择器属性?
- python - 在 finally 块中使用异常变量