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

目前发现eaccelerator安装之后如果php.ini中设置open_basedir将导致open_basedir的一些报错(open_basedir restriction in effect. File() is not within the allowed path(s)), 在网上查找说这是eaccelerator的一个BUG所导致,解决方法有以下几种:
1.在解压eaccelerator后修改eaccelerator-0.9.6/eaccelerator.c文件1156行的参数,如下:
if (PG(open_basedir) && php_check_open_basedir(realname TSRMLS_CC)) {
修改成:
if (PG(open_basedir) && php_check_open_basedir(file_handle->filename TSRMLS_CC)) {
修改完成后再安装。
2.在编译eAccelerator的时候增加 "--without-eaccelerator-use-inode" 参数
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config

以上两种方法测试通过。作为记录。

还有一种办法:
使用php-fpm加载一个新的php.ini,不再使用eAccelerator进行加速,换个其它的加速器吧,亲。

发表评论