4. 点击Validate按钮,可以看到如下提示,说明设置OK
eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。下面我们来看看eAccelerator扩展开启open_basedir报错解决办法。
eAccelerator扩展开启open_basedir报错
如果你在使用php加速扩展eAccelerator时发现开启open_basedir配置项目后程序页面或者PHP错误日志会提示.
open_basedir restriction. in Unknown on line 0
出现这个问题的原因是一般eAccelerator的缓存文件不在你配置的open_basedir目录之中,而eAccelerator也傻乎乎的遵守了open_basedir的设定.
在网上转了一圈发现了两种解决这个问题的办法
1. 给eAccelerator打补丁
下载本文附件中的补丁文件然后运行下面命令
cd eaccelerator-0.9.6.1
patch eaccelerator.c eaccelerator.c.2.patch
然后照常规步骤编译即可
2. 编译时增加参数
在配置eAccelerator的时候增加 “–without-eaccelerator-use-inode” 参数
./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.)
linux下的php扩展与windows下的扩展安装有些不同。下面就拿在linux下扩展php的pdo,pdo_mysql模块来说明一下
1.在php的原码安装包里,进入到etc/pdo_mysql里。假设你的php是安装在/usr/local/php里的。执行/usr/local/php/bin/phpize
2. 进行编译。./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql (假设你的mysql是安装在/usr/local/mysql)
3.编译安装。make,make install。
4.到了第3步的时候。在/usr/local/php/lib/php/extensions里就会多了个no-debug-non-zts-20050922文件夹,它里面就生成了一个pdo_mysql.so
5.修改php.ini,加入扩展语句extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/pdo_mysql.so"
6.重启apache。OK扩展完成
7.安装pdo的方法与pdo_mysql的方法一样.但是要注意在这个安装过程中如果系统没有aclocal命令,那么请先安装这个命令,这个命令在autoconf包里。
Xdebug版本下载
http://www.xdebug.com/download.php
注意在下载Xdebug时我们必须查看自己php版本之后与xdebug一样,并且要查看你的php是线程安全或非线程序安全的,否则可以没有用哦。
下载好 php_xdebug.dll 之后我们复制到你的php ext目录,如
D:/phpStudy/PHP5/ext/php_xdebug.dll
这个是我本地的,放好之后再把php.ini文件进行修改,加入下面代码
代码如下 | 复制代码 |
[Xdebug] |
好了最后一步重启apache就可以解决了哦,然后我们来检查一下Xdebug配置安装是否成功了,我们在一个php测试一下phpinfo()
如果在截图处可看到with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans
就代码成功了
现在我们测试一段代码
是不是非常详细的告诉我们错误信息了呀。
在前版本中我们加速php都会使用像php-accelerator zend之类的工具来进行加速优化了,但如果你使用了php5.5版本可以直接使用自带的Opcache加速PHP哦,下面就为大家介绍一下配置步骤吧。然后再php.ini配置里面添加对应的opcache配置即可:
代码如下 | 复制代码 |
[opcache] zend_extension = /data/app/php5/lib/php/extensions/no-debug-zts-20121212/opcache.so opcache.enable=1 opcache.memory_consumption = 64 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 opcache.revalidate_freq = 60 opcache.fast_shutdown = 1 opcache.enable_cli = 1 |
最后重启你的php-fpm 程序即可。命中率很高滴,很靠谱的: