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,成功!