解决 PHP 设置 open_basedir 与 eAccelerator 冲突问题

为 PHP 设置了 open_basedir 后,发现使用 require 和 include 始终会报出下面这样的 Warning 信息:

Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s)

这个 Warning 信息中,require 和 File 的括号中都是空白没有内容的,经过反复检查代码,确认所引用的路径在 open_basedir 允许的范围内。

通过去国外网站搜索资料,发现是因为 open_basedir 与 eAccelerator 冲突造成的。

需要重新编译一次 eAccelerator,编译时需要带上 –without-eaccelerator-use-inode 参数。

编译完重新启动 php-fpm 并删除之前的 eAccelerator 缓存文件即可。

阳光部落原创,更多内容请访问http://www.sunbloger.com/

为PHP加装eAccelerator方法

eAccelerator是一个自由开放源码的PHP加速器,优化和动态内容缓存,提高了PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执行效率提高1-10倍;

下面我们以eAccelerator 0.9.6.1版本为例,介绍一下编译安装方法:

1. 编译安装

tar jxvf ./eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –enable-eaccelerator=shared
make
make install

阅读全文