解决 Linux下zend Optimizer无法启动问题

在 CentOS6.0下 安装 lighttpd +nginx+ php5 + mysql5 + zend Optimizer


前 4个均可以用 yum 进行安装,很方便。


而 zend Optimizer 需要下载解压后,到解压目录输入 # ./install.sh 就会出现界面提示安装。安装后重启 lighttpd却没有成功启动 zend Optimizer 。


解决经过:


1. 开始认为是 php.ini 没有设置好。 打目录中找 #find / -name php.ini ,后发现网页输出 就有 Loaded Configuration File : /usr/local/Zend/etc/php.ini 显示 php.ini 文件已被加载。


2. 是否 zend Optimizer 版本问题,安装最新版还是不成功。


3. 在网络查找解决方法多是说 php.ini 设置问题。最终将几个方法总结才解决:


具体解决方法:


1. 对于 php.ini文件路径有问题( 我的在 phpinfo()显示php.ini路径正确,我就不用这个方法 )


解决方法


php -i | grep php.ini 就可以找到当前php使用的php.ini文件


比如, 编译安装时没有指定php.ini存放路径, 那么默认php.ini会放在/usr/local/lib下面


最好是在编译PHP时指定PHP配置文件的路径 如: --with-config-file-path=/usr/local/etc


而一般zend默认安装 php.ini在/etc/目录下面或/usr/local/Zend/etc 所以需要在安装的时候手工指定我们php.ini文件存放的位置


如果, 不知道现在的PHP 的配置文件具体位置的话 可以查看一下:


php -i | grep php.ini


如果php optimizer安装好了 却发现不能加载的话可以 手工指定读取php.ini文件的位置


php -c /etc/ -v 如果可以看到zend opt正确加载


那么做个连接就好了 连接到php默认读取的php.ini路径下面


比如


ln -sf /etc/php.ini /usr/local/lib


[root@localhost /]# php -v


PHP 5.2.5 (cli) (built: Jan 22 2006 12:59:19)


Copyright (c) 1997-2006 The PHP Group


Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies


with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies


with Zend Optimizer v3.3.2, Copyright (c) 1998-2006, by Zend Technologies


Ok 正常了 phpinfo()看到的当然也是一样的


2. 调用库文件的问题


有的时候还有一些情况下 php -i 或php -v 在控制台下可以看到zend opt,


但是 apache 执行phpinfo的输出里面却看不到


一般是因为 调用php的时候zend模块不能加载, 比如AS4里面 就是这样的


如as4下面默认的php安装后读取库文件的路径 是在/usr/lib下面 ,


而php.ini文件中加载zend模块是在zend安装路径的lib目录中


比如/usr/local/Zend/lib 这时apache在执行php时 不能加载zend模块 所以 在控制台里php -v 可以正常


但是apache 却没有加载zend。


解决办法


先把zend模块copy到


/usr/lib里面 然后改一下php.ini里面zend加载模块部分


( 我在 php -i 中显示 Failed loading /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied


看了这个原来是权限问题)


3. 最蛋疼的SElinux问题


SElinux导致PHP不能使用zend/lib下的库文件。所以,即便是做了link也不行。只能够拷贝库文件到有权限的目录。或者直接关掉SElinux


但我已 在 /etc/selinux/config 的 SELINUX=disabled 关掉SElinux 还是不行, 再网络查询发现


在你保证SElinux 被disable后.还执行下


chcon -t texrel_shlib_t 命令


如: chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so (这个文件视具体执行文件.)


就可以了。


我的解决的情况是:


1. 关闭SElinux


2. 运行 #chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so

3.然后重启httpd服务就可以了。

你可能感兴趣的:(性能调优)