zoukankan      html  css  js  c++  java
  • 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,成功!

  • 相关阅读:
    Flume 读取实时更新的日志文件
    一些关于Flume收集日志的资料
    Java Pattern Matcher 正则表达式需要转义的字符
    多播 & multicast
    branch prediction
    一时紧张简单题都没做好,哈
    海量数据求中位数
    继续过Hard题目.0207
    压力工具代码及epoll使用
    C++里面mutable的作用
  • 原文地址:https://www.cnblogs.com/sandea/p/10230403.html
Copyright © 2011-2022 走看看