背景:
Centos6.8服務器升級php版本,從7.1升級到7.3,常用擴展都安裝完成之后,報:Class 'ZipArchive' not found。一看就是zip擴展沒有,需要手動安裝了。
中間一步步,一會說autoconf版本過低,一會說libzip版本過低,又說cmake版本過低,
安裝:
安裝zip過程中,發現要先安裝 libzip1.5,安裝 libzip 之前還要安裝 cmake,而且這一個個包都有版本過低問題,需要升級,請耐心往下看如何一個一個overcome
參考鏈接:https://blog.csdn.net/Phplayers/article/details/101083313
以下是我最開始嘗試的安裝步驟,大家按這個而順序來,中間出現的失敗報錯,我都做了記錄並給出相應解決方案。
1、准備 php 開發包和擴展庫:
yum install php-devel php-pear
2、安裝php的zip擴展:(PECL:The PHP Extension Community Library是php的擴展庫)
pecl install zip
此處開始若遇到失敗,請看下面的“遇到問題 / 解決問題”。
3、開啟擴展( vim /etc/php.ini ):
extension=zip.so
zlib.output_compression = On
4、重啟服務:
service php-fpm restart
此處若出現警告:PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/zip.so' - libzip.so.5: cannot...
則zip擴展加載失敗,仍然會Class 'ZipArchive' not found,解決方案請看下面的“加載zip.so”
###################################################################
遇到問題:
第二步安裝zip擴展時報錯:
autoconf version 2.64 or higher is required
解決問題
升級autoconf,參考:https://blog.csdn.net/prettyshuang/article/details/51395095
---------------------------------------------------------------------------------------------------------------
遇到問題:
升級autoconf后,繼續 pecl install zip 報錯:
checking for libzip... not found
configure: error: Please reinstall the libzip
解決問題:
安裝或升級libzip,參考:https://www.jianshu.com/p/fdbdf834faca
#刪除舊版本 yum remove libzip -y #安裝新版本 wget https://libzip.org/download/libzip-1.5.0.tar.gz tar -zxvf libzip-* cd libzip* mkdir build && cd build && cmake .. && make && make install
---------------------------------------------------------------------------------------------------------------
遇到問題:
安裝libzip時報錯:
CMake Error at CMakeLists.txt:4 (CMAKE_MINIMUM_REQUIRED):
CMake 3.0.2 or higher is required. You are running version 2.8.12.2
解決問題:
查看Cmake版本: cmake --version
安裝CMake:yum install cmake (yum方式通常也會遇到版本過低,可以手動安裝)
手動安裝請參考:https://www.cnblogs.com/gyfluck/p/10478470.html
安裝好cmake后,回去繼續安裝libzip,然后再接着執行: pecl install zip 。一切順序的話會在 /usr/lib64/php/modules/ 目錄下生成了 zip.so 文件。
###################################################################
加載zip.so
參考鏈接:https://blog.csdn.net/ren593669257/article/details/100019391
vim /etc/ld.so.conf
include ld.so.conf.d/*.conf # 默認只有這一行 /usr/lib64 /usr/lib /usr/local/lib /usr/local/lib64 # 我的只要這行就夠了
查看/usr/local/lib64里面的內容
最后一步,使修改生效
sudo ldconfig
重啟php-fpm,警告消失。
網上還有一些其他的解決方案,但是我都沒成功,比如ln -s建立軟鏈接:
https://www.jianshu.com/p/393c83937949
總結:
網上有很多資料,同樣的報錯不同的解決方式,一個一個試過來, 最終摸索出一條正確的路,在此做個記錄,供有同樣問題的人參考