1. 程式人生 > >不重新編譯PHP為PHP安裝zlib擴充套件-學習收集

不重新編譯PHP為PHP安裝zlib擴充套件-學習收集

一臺伺服器,編譯PHP時未設定引數,導致缺少zlib擴充套件,無法執行解壓縮,錯誤資訊是:“Fatal error: Call to undefined function gzopen”。

首先找到當初編譯PHP時的目錄,如果沒了就找一個相同版本的解壓縮,解壓縮到php(假設)目錄下,然後以root身份進入php/ext/zlib/目錄下

執行phpize,報錯:“Cannot find config.m4.”,我找了半天沒找到這個檔案,但是看到一個類似的“config0.m4”,就cp了一個:

cp config0.m4 config.m4

這個解決方法有點山寨,我也不知道啥意思,為什麼多了一個0,反正親自測了能行。

再執行phpize,又報錯:“Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.”

原來是autoconf不存在,通過yum安裝:

yum -y install autoconf

再執行phpize,嗯,再敢報錯看我不打斷你的狗腿!!這次順利的執行完了。

# phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525

在這個目錄就生成了一個configure指令碼,再執行以下程式碼獲得php-config指令碼的位置備用:

# which php-config
/usr/local/bin/php-config(你的電腦上未必是這個結果)

再執行以下程式碼獲得zlib的位置備用:

# find / -name zlib.h
/usr/include/zlib.h

都準備好之後就開始執行配置

./configure --with-php-config=/usr/local/bin/php-config --with-zlib=/usr

注意:--with-zlib=/usr這裡不需要把檔案目錄寫全,寫到這裡就行了,PHP的擴充套件在編譯時都是這個德性,習慣就好了。

然後就是正式的編譯和安裝了:

make && make install

順利的話,最終會提示:

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20100525/

然後在php.ini的最後增加這麼一句:

extension=zlib.so

再重啟php的CGI或者FastCGI或者php-fpm就可以了,具體重啟什麼要看伺服器通過什麼方式執行的PHP。

一切順利的話,在phpinfo中就可以看到zlib的資訊了,這就證明PHP的zlib擴充套件已經順利的安裝成功了。