PHP5.5安装ZendGuardLoader扩展组件

来源:互联网 发布:知乎为什么有那么多985 编辑:程序博客网 时间:2024/05/18 00:17

续:
PHP 5.3 以后,Zend Optimizer 已经被全新的 Zend Guard Loader 取代
源码包下载
php5.5:
http://downloads.zend.com/guard/7.0.0/zend-loader-php5.5-linux-x86_64_update1.tar.gz

tar xvf zend-loader-php5.5-linux-x86_64_update1.tar.gzcd  zend-loader-php5.5-linux-x86_64cp ZendGuardLoader.so /usr/local/php

这里写图片描述

vim /etc/php.ini  在末尾添加一下内容[zend.loader]zend_loader.enable=1zend_extension=/usr/local/php/ZendGuardLoader.so

Apache:重启Apache服务即生效
Nginx:重启 php-fpm服务则生效
如果幸运的话,可以直接重启成功,不过我这里遇到了点问题,重启服务后两个都未生效
service php-fpm restart 报错如下:
这里写图片描述

寻求百度大神得知:这是由于php在安全线程模式下运行不支持ZendGuardLoader的原因
这里写图片描述
那就把安全模式改为disable吧,继续寻求百度大神如何改,找到一篇有用的文章:http://aiwei.us/5463.html 意思就是:
如果要在Linux 上运行Zend Guard Loader时,编译PHP5.3以上版本时不能启用Thread Safe模式,也就是禁用Thread Safe,使其状态为Thread Safety:disabled,要想PHP Thread Safe 为disabled状态,Apache编译时MPM必须为prefork模式,然后再编译PHP,Thread Safety默认就是disable了。
先来查看一下我的apache的MPM模式:
这里写图片描述
从上面卡看我的apache mpm使用的是event模式,幸运的是我编译时使用的是–enable-mpms-shared=all, 可以支持三种模式,只需修改下配置文件(httpd.conf)切换为prefork模式即可,否则我就得重新编译Apache了。

vim /etc/httpd/httpd.conf修改如下

这里写图片描述
重启Apache,再次查看
httpd -V
这里写图片描述
已经是prefork模式了,不过PHP必须得要再次重新编译安装一下,才可以

CD到原来的源码包目录下cd /usr/src/php/php-5.5.15  make clean  需要删除上次的编译结果,然后才能再重新编译,否则会报错./configure 参数与上次编译时完全一样make && make install一切顺利,安装完成

重启php-fpm服务,没有再报错,重启成功
重启apache服务
再此打开phpinfo
这里写图片描述
Thread Safety 已经是 disabled,且 Zend Guard Loader也成功出来了
总结:
PHP5.3以上版本要想支持ZendGuardLoader,php Thread Safe必须为disable,要想PHP Thread Safe 为disabled状态,Apache编译时MPM必须为prefork模式,所以LANMP的编译安装顺序:mysql-apache-php-nginx(nginx什么时候装都可以)
拓展:Apache的三种MPM模式:prefork,worker,event 详解http://blog.jobbole.com/91920/)

0 0
原创粉丝点击