解决Nginx+php(php 5.3.0及其以上版本)防止目录跨站问题

说明:
站点一:bbs.osyunwei.com 程序目录:/data/wwwroot/bbs.osyunwei.com
如下图所示:
站点二:sns.osyunwei.com 程序目录:/data/wwwroot/sns.osyunwei.com
如下图所示:
php.ini配置文件路径:/etc/php.ini php版本:php 5.3.16(此方法只针对php 5.3.0及其以上版本有效)
 
 
问题:
在站点一的目录下面上传PHP管理工具(请自行搜索下载),通过此工具可以浏览到站点二的目录内容,出现跨站、跨目录浏览 
如下图所示: 
解决办法:操作步骤
vi /etc/php.ini #编辑,在最后添加以下代码,修改open_basedir的目录为站点路径
[HOST=bbs.osyunwei.com]
[PATH=/data/wwwroot/bbs.osyunwei.com]
open_basedir=/data/wwwroot/bbs.osyunwei.com/:/tmp/
[HOST=sns.osyunwei.com]
[PATH=/data/wwwroot/sns.osyunwei.com]
open_basedir=/data/wwwroot/sns.osyunwei.com/:/tmp/
:wq! #保存退出
备注:如果有多个站点,可以依次添加
service nginx restart #重启nginx
service php-fpm restart #重启php-fpm
测试:如下图所示
可以看到,通过站点一中的PHP管理工具已经不能访问站点二中的目录了,问题解决!
扩展阅读:
[HOST]配置段可用的参数: 
display_errors = On 
short_open_tag = On 
expose_php = Off 
... 
[PATH]配置段可用的参数: 
upload_tmp_dir=/tmp 
auto_prepend_file=top.php 
...
官方文档:http://www.php.net/manual/zh/ini.sections.php
至此,解决Nginx+phpphp 5.3.0及其以上版本)防止目录跨站问题教程完成

你可能感兴趣的:(PHP,nginx,目录,跨站)