Nginx有一个缺陷,就是没有像apache的php_value_basedir给我们限制php文件访问目录,PHP低版本下,fastcgi 模式
下open_base设置无效,PHP在PHP5.3.3以上已经增加了HOST配置,可以起到防跨站、跨目录的问题
如果你是PHP 5.3.3以上的版本,可以修改/usr/local/php/etc/php.ini在末尾里加入:
[HOST=111cn.net]
代码如下 | 复制代码 |
open_basedir=/home/wwwroot/111cn.net/:/tmp/ [PATH=/home/wwwroot/111cn.net] open_basedir=/home/wwwroot/111cn.net/:/tmp/ |
修改好了。
最后重启下php-fpm:sudo /etc/init.d/php-fpm restart
OK,。这样设置后。就能增强系统的安全性,PHP目前,折腾也只能在他所在的目录下设置啦
如果你不是php5.3.3以上版本我们就只能如下操作了
1、解压php源代码不细说了。
2、执行编译./configure -- (自带参数)
3、修改源代码。此文件位于main/fopen_wrappers.c
代码如下 | 复制代码 |
/* {{{ php_check_open_basedir */ PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC) { /* Only check when open_basedir is available */ if (PG(open_basedir) && *PG(open_basedir)) { char *pathbuf; char *ptr; char *end; /*添加开始, add by http://www.111cn.net */ pathbuf = estrdup(PG(open_basedir)); within the allowed path(s): (%s)", path, PG(open_basedir)); |
然后执行
代码如下 | 复制代码 |
make ZEND_EXTRA_LIBS='-liconv' make install cp php.ini-dist /usr/local/php/etc/php.ini最后修改php.ini中的open_basedir改为:open_basedir = "/var/tmp/:/tmp/" |