NGINX/PHP 无法访问根目录外的文件
NGINX/PHP cant access files outside root directory
我刚刚在 openbsd 服务器上安装了 nginx 和 php72 来设置网站。我在 /var/www/html 中有我的网站根目录,并且想访问我存储在 /var/cache/ 中的一些 XML 文件。
问题是,当我尝试检查 if 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 中的脚本 运行 访问文件系统上的其他路径。
来自文档:
By default nginx will chroot(2) to the home directory of the user running the daemon, typically “www”, or to the home directory of user in nginx.conf. The -u option disables this behaviour, and returns nginx to the original "unsecure" behaviour.
我刚刚在 openbsd 服务器上安装了 nginx 和 php72 来设置网站。我在 /var/www/html 中有我的网站根目录,并且想访问我存储在 /var/cache/ 中的一些 XML 文件。 问题是,当我尝试检查 if 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 中的脚本 运行 访问文件系统上的其他路径。
来自文档:
By default nginx will chroot(2) to the home directory of the user running the daemon, typically “www”, or to the home directory of user in nginx.conf. The -u option disables this behaviour, and returns nginx to the original "unsecure" behaviour.