如何阻止来自特定目录的包含 PHP
How to block includes from specific directories PHP
问题
假设我有以下目录结构:
root
| 123
| | index.php
| | abc
| | | file.php
| 456
| | another_file.php
如何配置 PHP 以便 index.php
可以包含 file.php
而不是 another_file.php
?
换句话说,include("abc/file.php")
应该有效,但 include("../456/another_file.php")
不应该。
原因
我需要这样做的原因是因为在我的网络服务器上,我在同一个文件系统上有两个虚拟主机,它们是为两个不同的用户准备的。每个用户都应该能够包含位于他们自己文件夹中的文件,但他们不应该能够包含来自外部文件夹的文件。
每个虚拟主机都有自己的 php.ini 文件(由 suPHP 提供)。
研究/尝试
我已经尝试使用 include_path
php.ini 设置(请参阅:http://php.net/manual/en/ini.core.php#ini.include-path), but have got nowhere. I have also researched this topic extensively on Whosebug, but to no avail - i.e. How do I set an absolute include path in PHP? 没有帮助,因为我不希望这是可选的或一段代码需要附加到文件。
假设你有两个文件夹 123
和 456
,他们只能打开他们文件夹的文件
你可以试试这个:
在文件夹 123
和 456
中创建 .user.ini
添加指令 open_basedir=./:/tmp/:/usr/local/php/
提交 .usr.ini
root
| 123
| | .user.ini
| | index.php
| | abc
| | | file.php
| 456
| | .user.ini
| | another_file.php
和
touch ./root/123/.user.ini
echo 'open_basedir=./:/tmp/:/usr/local/php/' > ./root/123/.user.ini
touch ./root/456/.user.ini
echo 'open_basedir=./:/tmp/:/usr/local/php/' > ./root/456/.user.ini
** 然后重启 php-fpm**
文件夹 ./
是 /root/123/
文件夹 /usr/local/php/
是您的 php 文件夹,您 必须包含该文件夹 ,它应该取决于您安装 php 的位置,在我的电脑,它是 /usr/local/php/
而 tmp
文件夹可能保存 som tmp 文件。
您可以使用:
来划分不同的文件夹
问题
假设我有以下目录结构:
root
| 123
| | index.php
| | abc
| | | file.php
| 456
| | another_file.php
如何配置 PHP 以便 index.php
可以包含 file.php
而不是 another_file.php
?
换句话说,include("abc/file.php")
应该有效,但 include("../456/another_file.php")
不应该。
原因
我需要这样做的原因是因为在我的网络服务器上,我在同一个文件系统上有两个虚拟主机,它们是为两个不同的用户准备的。每个用户都应该能够包含位于他们自己文件夹中的文件,但他们不应该能够包含来自外部文件夹的文件。
每个虚拟主机都有自己的 php.ini 文件(由 suPHP 提供)。
研究/尝试
我已经尝试使用 include_path
php.ini 设置(请参阅:http://php.net/manual/en/ini.core.php#ini.include-path), but have got nowhere. I have also researched this topic extensively on Whosebug, but to no avail - i.e. How do I set an absolute include path in PHP? 没有帮助,因为我不希望这是可选的或一段代码需要附加到文件。
假设你有两个文件夹 123
和 456
,他们只能打开他们文件夹的文件
你可以试试这个:
在文件夹 123
和 456
中创建 .user.ini
添加指令 open_basedir=./:/tmp/:/usr/local/php/
提交 .usr.ini
root
| 123
| | .user.ini
| | index.php
| | abc
| | | file.php
| 456
| | .user.ini
| | another_file.php
和
touch ./root/123/.user.ini
echo 'open_basedir=./:/tmp/:/usr/local/php/' > ./root/123/.user.ini
touch ./root/456/.user.ini
echo 'open_basedir=./:/tmp/:/usr/local/php/' > ./root/456/.user.ini
** 然后重启 php-fpm**
文件夹 ./
是 /root/123/
文件夹 /usr/local/php/
是您的 php 文件夹,您 必须包含该文件夹 ,它应该取决于您安装 php 的位置,在我的电脑,它是 /usr/local/php/
而 tmp
文件夹可能保存 som tmp 文件。
您可以使用:
来划分不同的文件夹