閱讀857 返回首頁    go 人物


linux 下的lighttpd不能加載zend Optimizer的解決方法

在 Fedora 10 安裝 lighttpd php5 mysql5 zend Optimizer前 3個均可以用 yum 進行安裝,很方便。

在 Fedora 10 安裝 lighttpd php5 mysql5 zend Optimizer

前 3個均可以用 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

HP 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

就可以。

還有一個最終的解決辦法,就是使用低版本的php源代碼來編譯安裝php.

最後更新:2017-01-04 22:34:35

  上一篇:go mysql
  下一篇:go 什麼是MRTG、RRDTool、Cacti、CactiEZ?