PHP8安裝ZIP擴展,使用源碼安裝PHP擴展中的ZIP擴展

在Centos中安裝PHP擴展中的ZIP擴展,PHP從7.X升級到PHP8.X後,有兩個php擴展失效,一個是imagick擴展,另外一個就是ZIP擴展,imagick擴展卸載掉原擴展後,使用pecl命令在官方的php擴展庫中安裝即可,在安裝ZIP擴展時失敗,發現是libzip的問題。安裝ZIP擴充。

PHP擴充安裝,在Centos中使用源碼安裝ZIP擴展

在Centos中安裝 中的 ,PHP從7.X升級到PHP8.X後,有兩個php擴展失效,一個是imagick擴展,另外一個就是ZIP擴展,imagick擴展卸載掉原擴展後,使用pecl命令在官方的php擴展庫中安裝即可,在安裝ZIP擴展時,遭遇安裝失敗,發現是libzip的問題。下面我們一起安裝ZIP擴充。

 

 

在安裝zip擴充功能之前,先安裝libzip,前往libzip官網下載最新版本的libzip。

libzip官網:https://libzip.org/

PHP8安裝ZIP擴展,使用源碼安裝PHP擴展中的ZIP擴展

Centos8安裝ZIP擴充

PHP7升級PHP8後安裝zip擴展,先卸載先前安裝過的zip和libzip。

dnf remove zip libzip

在卸載libzip時,會連帶卸載掉php-pecl-zip,這個是之前PHP7安裝的zip擴展,必須卸載掉。

卸載完畢之後重新安裝zip和libzip

dnf install zip

這個zip是zip主程序,在安裝php擴充前必須先安裝zip主程式。

libzip無法使用centos8的官方軟體庫,centos8版本比較老,官方軟體庫的libzip版本太低,在安裝zip擴充功能時會報錯無法安裝。

接下來從libzip官網下載最新版本的libzip

#下載libzip wget https://libzip.org/download/libzip-1.9.2.tar.xz #解壓縮libzip tar -xvf libzip-1.9.2.tar.xz #進入libzip資料夾準備安裝cd libzip-1.9.2

在安裝libzip之前,需要先安裝cmake3,libzip需要cmake3來編譯安裝。

dnf install -y cmake3

最後安裝libzip

#建立build後,進入該資料夾mkdir build && cd build #進行編譯cmake .. #進行安裝libzip make && make install

libzip安裝成功後,進行安裝zip擴充。

pecl install zip

或使用zip擴充源碼進行安裝。

在PHP官網的PHP擴充網站上https://pecl.php.net/package/zip下載最新版的php擴展

可以使用pecl指令安裝

wget https://pecl.php.net/get/zip-1.21.1.tgz pecl install zip-1.21.1.tgz

也可以使用編譯安裝

wget https://pecl.php.net/get/zip-1.21.1.tgz tar -xvf zip-1.21.1.tgz cd zip-1.21.1 phpize ./configure make && make install

PHP8安裝ZIP擴展,使用源碼安裝PHP擴展中的ZIP擴展

zip擴充已經安裝成功了,不過很多時候都會報錯,使用 php -m 指令查看擴充功能是否安裝正確,如果報錯的話,還需要繼續處理錯誤。

系統報錯找不到libzip.so.5的解決方法

zip擴充安裝完畢後,一般會遇到:無法載入動態函式庫「zip.so」的錯誤。

PHP Warning: PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib64/php/modules/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /sous/ (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib64/php/modules/zip.so (libzip.so.5: cannot open shared object file: No such file 或(/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

 

載入zip.so時缺少libzip.so.5文件,需要libzip.so.5文件。

libzip.so.5檔案正常的都安裝在/usr/local/lib64下,zip擴充功能需要將libzip.so.5檔案放在/usr/local/lib/下。

使用FTP工具將/usr/local/lib64資料夾下的libzip.so.5文件,複製到/usr/local/lib/資料夾下,將檔案權限修改為755

還有一種方法是,將zip.so分別軟連結在/usr/local/lib64 和/usr/local/lib 目錄下即可,透過idconfig 指令使其生效。

ln -s /usr/lib64/php/modules/zip.so /usr/local/lib64/zip.so && ldconfig ln -s /usr/lib64/php/modules/zip.so /usr/local/lib/zip.so && php/modules/zip.so /usr/local/lib/zip.so && php/ldconfig

PHP8安裝ZIP擴展,使用源碼安裝PHP擴展中的ZIP擴展

評分

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *