解决PHP中eAccelerator扩展开启open_basedir报错

出现这个问题的原因是一般eAccelerator的缓存文件不在你配置的open,首先您要安装好PHP

eAccelerator扩展开启open_basedir报错

 

如果你在使用php加速扩展eAccelerator时发现开启open_basedir配置项目后程序页面或者PHP错误日志会提示.

大多PHP程序,都要在服务器端安装加速器,以提高程序程序效率。我们所介绍的这款eaccelerator加速器,实际上是一个自由软件,目前仍是免费的;这对于节省服务架设成本来说,也是一个不错的选择;

open_basedir restriction. in Unknown on line 0

 

出现这个问题的原因是一般eAccelerator的缓存文件不在你配置的open_basedir目录之中,而eAccelerator也傻乎乎的遵守了open_basedir的设定.

1、PHP加速器eaccelerator 简介;

在网上转了一圈发现了两种解决这个问题的办法

 

  1. 给eAccelerator打补丁

 

下载本文附件中的补丁文件然后运行下面命令

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

cd eaccelerator-0.9.6.1

 

patch eaccelerator.c eaccelerator.c.2.patch

官方主页:

然后照常规步骤编译即可

 

  1. 编译时增加参数

 

在配置eAccelerator的时候增加 “–without-eaccelerator-use-inode” 参数

2、 安装和配置;

./configure –without-eaccelerator-use-inode

 

补充:eAccelerator安装和配置

 

首先您要安装好PHP,然后再来编译安装
eaccelerator,过程如下。我们从官方下的版本是
eaccelerator-0.9.5.2.tar.bz2
编译安装;
# tar xvf eaccelerator-0.9.5.2.tar.bz2
# cd eaccelerator-0.9.5.2
# export PHP_PREFIX=”/usr”
# $PHP_PREFIX/bin/phpize
# ./configure
–enable-eaccelerator=shared
–with-php-config=$PHP_PREFIX/bin/php-config
# make
# make install
注:通过export
来设置php所在的安装路径变量,我的PHP是安装在/usr目录下,系统用Slackware
12.0。其它系统如果默认安装也大体差不多;如果不一样,就自己指定一下;
完成安装后,eaccelerator.so模块位于
/usr/lib/php/extensions目录中,您的系统如果和我不一样,您自己应该安装在哪了;
# echo “/usr/lib/php/extensions” > /etc/ld.so.conf
# ldconfig
注:更新动态链接库地址;
修改配置文件;
我们首先要修改;php.ini,然后重启Apache;
在php.ini文件中,加入;
zend_extension=”/usr/lib/php/extensions/eaccelerator.so”
注:模块的具体位置;
eaccelerator.shm_size=”16″ 注:共享内存大小;
eaccelerator.cache_dir=”/home/eaccelerator” 注:缓存目录;
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
注:其中,模块的具体位置必须正确,以您的系统为准;共享内存大小可以自己调整,感觉16M还是可以的,根据服务器的情况,你自己调一下。缓存目录可以自己指定,我们在这里指定的是
/home目录上的 eaccelerator 目录,如果没有,自己创建一个;权限是0777;
以上的配置是把 eaccelerator 做为 Zend
的扩展模块来编译的办法。如果您的PHP是用安装模式编译的,要把
zend_extension改为zend_extension_ts 。
如果您是把 eaccelerator 做为 PHP的一个扩展,要用下面的配置 ;
extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/home/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
是不是生效了,您要查看 /home/eaccelerator
目录中,当Apache服务器启动了,你随便点几个页面,如果在这个目录中,出现文件了。那就是生效了。如果没任何文件,就要找原因了
……
这两个配置文件,是不是管用。要你自己根据情况来修改。
# mkdir /home/eaccelerator
# chmod 777 /home/eaccelerator
注:创建缓存目录池,权限是777
(较为安全的应该是0644,原文: A safer and cleaner way would be to
change the owner of the directory to the same user PHP runs as (most of
the time the same user as Apache or Lighttpd) and set 0644
permissions.)

首先您要安装好PHP,然后再来编译安装eaccelerator,过程如下。我们从官方下的版本是eaccelerator-0.9.6.1.tar.gz

 

 

2.1 编译安装;

 

 

# tar zxvf eaccelerator-0.9.6.1.tar.gz

# cd eaccelerator-0.9.5.2

# export PHP_PREFIX=”/usr”

# $PHP_PREFIX/bin/phpize

#  ./configure

–enable-eaccelerator=shared

–with-php-config=$PHP_PREFIX/bin/php-config

# make

# make install

注:通过export
来设置php所在的安装路径变量,我的PHP是安装在/usr目录下,系统用Slackware
12.0。其它系统如果默认安装也大体差不多;如果不一样,就自己指定一下;

 

完成安装后,eaccelerator.so模块位于/usr/lib/php/extensions目录中,您的系统如果和我不一样,您自己应该安装在哪了;

 

# echo “/usr/lib/php/extensions” > /etc/ld.so.conf

# ldconfig

注:更新动态链接库地址;

 

 

2.2 修改配置文件;

 

 

我们首先要修改;php.ini,然后重启Apache;

 

在php.ini文件中,加入;

 

zend_extension=”/usr/lib/php/extensions/eaccelerator.so”
注:模块的具体位置;

eaccelerator.shm_size=”16″ 注:共享内存大小;

eaccelerator.cache_dir=”/home/eaccelerator” 注:缓存目录;

eaccelerator.enable=”1″

eaccelerator.optimizer=”1″

eaccelerator.check_mtime=”1″

eaccelerator.debug=”0″

eaccelerator.filter=””

eaccelerator.shm_max=”0″

eaccelerator.shm_ttl=”0″

eaccelerator.shm_prune_period=”0″

eaccelerator.shm_only=”0″

eaccelerator.compress=”1″

eaccelerator.compress_level=”9″

注:其中,模块的具体位置必须正确,以您的系统为准;共享内存大小可以自己调整,感觉16M还是可以的,根据服务器的情况,你自己调
一下。缓存目录可以自己指定,我们在这里指定的是/home目录上的eaccelerator
目录,如果没有,自己创建一个;权限是0777;

 

以上的配置是把eaccelerator 做为Zend
的扩展模块来编译的办法。如果您的PHP是用安装模式编译的,要把zend_extension改为zend_extension_ts

 

如果您是把eaccelerator 做为PHP的一个扩展,要用下面的配置 ;

 

extension=”eaccelerator.so”

eaccelerator.shm_size=”16″

eaccelerator.cache_dir=”/home/eaccelerator”

eaccelerator.enable=”1″

eaccelerator.optimizer=”1″

eaccelerator.check_mtime=”1″

是不是生效了,您要查看/home/eaccelerator
目录中,当Apache服务器启动了,你随便点几个页面,如果在这个目录中,出现文件了。那就是生效了。如果没任何文件,就要找原因了
……

 

这两个配置文件,是不是管用。要你自己根据情况来修改。

 

# mkdir /home/eaccelerator

# chmod 777 /home/eaccelerator

注:创建缓存目录池,权限是777

 

等这一切完成后,就要重启Apache服务器,如果没弹出什么错误,大多是正确的。查看一下缓存池,点几个页面,就知道是不是管用了。好象是比较简单。

 

 

3、 关于本文;

 

 

本文是介绍PHP加速器eaccelerator
的文档,并没有咆嘘eaccelerator有多好。我只看重效果,在jiankli.com使用的过程中,感觉还是不错的。由于用了,所以就把这个东西介绍给新手或刚从事服务器管理的弟兄。PHP加速器有好多,但在自由软件下,目前不必花银
子的并且一直坚持开发的,eaccelerator就是其中一个。所以,我还是本着负责的态度把这个东西介绍给大家,呵呵~~~
当然jiankli.com 已经用了好几年了,也用过eaccelerator
的前身TurckMMCache。

 

 

4、 参考文档;

 

 

eaccelerator的README文档;