Unable to load dynamic library 'zip.so' on Centos 6.8 useing php7.3


背景:

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

https://stackoverflow.com/questions/54265257/unable-to-load-dynamic-library-zip-so-on-centos-7-6-1810-using-remi-php72-repo

 

總結:

網上有很多資料,同樣的報錯不同的解決方式,一個一個試過來, 最終摸索出一條正確的路,在此做個記錄,供有同樣問題的人參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM