php.ini中编辑
open_basedir —— 定义PHP服务仅允许在特定目录下工作。
多个路径用 : 做分割,表示 或
如果改成/home : /root下,刷新页面是不会成功的
查看错误日志提示会显示:网页文件目录不在允许访问路径之中
修改成 网页文件的目录 + /tmp
(会有临时的文件生成在/tmp 中,所以配置的路径一定要记得加上 /tmp )
这个时候bbs.aminglinux.cc可以正常使用了,
但是由于设置了PHP使用的路径是bbs的,所以使用blog.aminglinux.cc 会失败,
网页会显示如下状态:典型的open_basedir约束导致的网页显示错误
解决方案可以把php.ini中添加blog的路径,改为:
open_basedir = /data/wwwroot/bbs.aminglinux.cc : /tmp : /data/wwwroot/blog.aminglinux.cc
则可以成功刷出网页。
但这样有一个安全隐患,如果被黑客攻击其中一个网站拿到了权限,而PHP又可以登陆另一个网站目录,则也可以把另一个网站数据拿走。
所以最好的方式PHP服务路径是不在 php.ini 文件中定义,而去各自pool池子里定义
/usr/local/php-fpm/etc/php-fpm.conf/ XXX.conf
在池子里添加 php_admin_value[open_basedir] =
grep –v ‘ ^; ‘ XXXX —— XXXX文件里以;开头的行统统去除后显示
grep 过滤关键字
-v 显示
^; 以;开头的
效果如下:
grep -v ‘^ $’ XXXXX —— 去掉文件中的空行显示
(就是以空开头和结尾的,^表开头 $表结尾)
通常用 | 结合起来使用,可以把文件中的注释项目和空行一次全部清理后显示。
效果如下:
在当前目录/usr/local/php-fpm/etc/php-fpm.conf/ 新增加一个PHP池配置文件blog.conf
可以用命令 vi blog.conf 直接在当前目录创建并开始编辑一个新文件。
新的blog的池配置文件,
改下池名,
改下监听的socket,
改下open_basedir路径为各自私有路径
错误日志 和 缓慢日志(黄色箭头) 路径可以用公有的。
把原本的www.conf 命名改成 bbs.conf 方便区分 ,vi 一下把bbs.conf里面记录的池名也改一下
检验并且重启
nginx配置文件要一起改(bbs 的www.socket 改为 bbs.socket , blog的改为blog.socket)
这样PHP服务就分开作用了,一个池子一个站
这样2个网站相互独立出来,互相独立的资源。
其实在PHP池设置里,所有php.ini 里面的参数都能在这里单独定义!
On/off 这类开关就设置成 php_admin_flag[ ini里面的名字 ] =
目录,标志字符串 这类就设置成 php_admin_value[ ini里面的名字 ] =
如果即在php.ini 又在 php-fpm 池文件中定义了,则以php-fpm池文件的配置为准。