centos7.6使用宝塔后手动安装php_rar扩展,让PHP可以读取解压和压缩RAR文件
2020-10-31 admin php linux 1582
因为在项目中需要预览用户上传的RAR文件,在linux中为了方便使用了宝塔面板安装一键PHP环境,但宝塔自带的扩展管理中不包含rar,因此需要手工安装,安装过程如下:
先下载扩展:
cd /www/ wget https://pecl.php.net/get/rar-4.1.0.tgz
然后解压:
tar -xvf rar-4.1.0.tar
查看宝塔面板php7.3安装路径下的是否存在/www/server/php/73/bin/phpize,如果存在,进入刚才解压的目录执行这个phpize命令:
cd rar-4.1.0 /www/server/php/73/bin/phpize
在解压目录里执行phpize主要是为了侦测当前php运行环境,给rar源码生成configure配置的相关文件,以便后期编译需要。
运行configure ,注意后面的--with-php-config参数一定不能缺,这个的作用是关联上当前需要关联的php版本,尤其是在安装多个不同版本php时。
./configure --with-php-config=/www/server/php/73/bin/php-config
编译源码:
make && make install
编译完成在最后会提示生成的rar.so所在的路径,如下:
Build complete. Don't forget to run 'make test'. Installing shared extensions:/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/
宝塔面板编辑php7.3的配置文件,在最后添加:
[rar] extension="/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/rar.so"
重启php7.3即可。如何使用呢?请看下面的示例代码:
//预览rar压缩包内容 public function readrar($file){ $file = str_replace(env('APP_URL').'/','',$file);//要用相对路径 $rar_file = rar_open($file) or die("无法打开RAR文件!"); $entries = rar_list($rar_file); foreach ($entries as $entry) { $filename = $entry->getName();//文件名 $wjlx = pathinfo($filename, PATHINFO_EXTENSION);//文件类型 $size1 = sprintf("%.2f",$entry->getUnpackedSize() / 1024) . 'KB';//压缩前大小 $size2 = sprintf("%.2f",$entry->getPackedSize() / 1024) . 'KB';//压缩后大小 $time = $entry->getFileTime();//创建时间 $filenames[] = array('文件名'=>$filename,'类型'=>$wjlx,'压缩前大小'=>$size1,'压缩后大小'=>$size2,'创建时间'=>$time); } rar_close($rar_file); return $filenames; }
记录完毕。