想象一下,我有以下目录结构:
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")
不应该有效。
我需要这样做的原因是因为在我的Web服务器上,我在同一个文件系统上有两个虚拟主机,这些主机适用于两个不同的用户。每个用户都应该能够包含居住在他们自己的文件夹中的文件,但是他们不应该包含来自其外部的文件。
每个虚拟主机都有自己的php.ini文件(由suPHP提供)。
我已尝试使用include_path
php.ini设置(请参阅:http://php.net/manual/en/ini.core.php#ini.include-path),但无处可去。我也在StackOverflow上广泛研究了这个主题,但无济于事 - 即How do I set an absolute include path in PHP?没有帮助,因为我不希望这是可选的或需要附加到文件的一段代码。 / p>
答案 0 :(得分:1)
假设您有两个文件夹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文件。
您可以使用:
划分不同的文件夹