php實現rar文件的讀取和解壓


PHP Rar Archiving 模塊 (php_rar) 是一個讀取和解壓rar文件的模塊,但不提供RAR壓縮(打包)的功能。

 

1.首先要到PECL的RAR頁面下載DLL. 根據自己的情況選擇下載對應版本的DLL.

PHP版本要求:php_rar模塊適用於php 5.2及以上, 不過對於windows系統,似乎只有php5.3 / 5.4對應的DLL下載。

 

2.下載到的是個zip包,將其中的php_rar.pdb和php_rar.dll兩個文件解壓到PHP安裝目錄下的ext子目錄中。

 

3.在php.ini中加入一行php_rar擴展引用聲明 extension=php_rar.dll

 

4.如果使用Apache服務器,就需要重啟Apache。IIS下以FastCGI模式加載的PHP則不需要進一步操作了。

 

5.解壓縮zip文件  方法一

$zip = new ZipArchive();//新建一個ZipArchive的對象
if ($zip->open(讀取上傳文件路徑) === TRUE){

    $zip->extractTo(解壓文件路徑);//假設解壓縮到在當前路徑下images文件夾的子文件夾php
    $zip->close();//關閉處理的zip文件
}

 

6.解壓縮zip文件  方法二

$archive = new PclZip(讀取上傳文件路徑);
if ($archive->extract(PCLZIP_OPT_PATH, 解壓文件路徑)){ /*data換成其他路徑即可*/
    //die("Error : ".$archive->errorInfo(true));
} try {
    $folder_list = my_scandir(解壓文件路徑);  
} catch (Exception $e) {
}

 

7.解壓縮rar文件

$rar_file = rar_open(讀取上傳文件路徑) or die("Failed to open Rar archive");
$entries = rar_list($rar_file);
foreach ($entries as $entry) {
    $entry->extract(解壓文件路徑); /*/dir/extract/to/換成其他路徑即可*/

rar_close($rar_file); 

 

 

安裝rar Linux環境插件

 

先到rar擴展的主頁https://pecl.php.net/package/rar因為服務器上運行的是php 7.2支持最新版本rar擴展,那就下載最新版4.0.0。

wget https://pecl.php.net/get/rar-4.0.0.tgz

然后解壓

gunzip rar-4.0.0.tgztar -xvf rar-4.0.0.tar

查看寶塔面板php7.2安裝路徑下的是否存在/www/server/php/72/bin/phpize,如果存在,進入剛才解壓的目錄執行這個phpize

cd rar-4.0.0/www/server/php/72/bin/phpize

在解壓目錄里執行phpize主要是為了偵測當前php運行環境,給rar源碼生成configure配置的相關文件,以便后期編譯需要。

運行configure ,注意后面的--with-php-config參數一定不能缺,這個的作用是關聯上當前需要關聯的php版本,尤其是在安裝多個不同版本php時。

./configure --with-php-config=/www/server/php/72/bin/php-config

編譯源碼

make && make install

編譯完成在最后會提示生成的rar.so所在的路徑。

Build complete.Don't forget to run 'make test'.Installing shared extensions: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/

在php7.2的配置文件php.ini最后一行添加

[rar]

extension="/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/rar.so"

重啟一下相應版本的php7.2 fpm服務,或者干脆重啟一下服務器。

檢查一下php7.2是否加載rar擴展成功

/www/server/php/72/bin/php -m

看到執行命令后返回的文字里面有rar,成功!


免責聲明!

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



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