对于我的网络托管面板,需要阻止用户访问其目录(/var/www/u/s/username
)之外的文件。我试图在httpd.conf
中使用这一行来阻止人们上一个目录。
<Directory /var/www/users/>
php_admin_value open_basedir .:/usr/lib/php5
</Directory>
但在php.ini
中,似乎没有效果。我做错了什么?
答案 0 :(得分:2)
这可能是一个愚蠢的建议,但你在php.ini更改后重新启动了网络服务器吗?
您可能尝试使用的另一种方法是使用“auto_prepend_file”指令附加文件,以包含一个脚本,将open_basedir指令收紧到当前用户目录:
来自PHP.net(http://www.php.net/manual/en/ini.sect.safe-mode.php)
从PHP 5.3.0开始,open_basedir可以在运行时收紧。这意味着如果在php.ini中将open_basedir设置为/ www /,则脚本可以使用ini_set()
在运行时将配置收紧到/ www / tmp /
其他建议:
需要正确设置Apache配置才能使INI覆盖生效。确保在服务器或虚拟主机的Apache配置中设置了“AllowOverride Options”或“AllowOverride All”。
http://us2.php.net/configuration.changes
http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride
答案 1 :(得分:1)
您可能需要为每个用户目录添加一行:
<Directory /var/www/u/s/username>
php_admin_value open_basedir "/var/www/u/s/username/:/shared/path/"
</Directory>
请注意,斜杠是为了防止用户“username”访问“username2”目录。
答案 2 :(得分:0)
chdir('/wherever/you/want')
,拥有“。”扩展为/wherever/you/want
答案 3 :(得分:0)
很可能你正在修改错误的“php.ini”。