PHP5.5安裝ZendGuardLoader擴展組件

續:
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.gz
cd  zend-loader-php5.5-linux-x86_64
cp ZendGuardLoader.so /usr/local/php

這裏寫圖片描述

vim /etc/php.ini  在末尾添加一下內容
[zend.loader]
zend_loader.enable=1
zend_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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章