centos下 安装ZipArchive扩展

本文详细介绍了如何在CentOS上安装PHP的ZipArchive模块。针对旧版本的PHP环境(如5.2.17),提供了从下载源码包、解压、配置、编译到最终在php.ini中启用模块的全过程指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载至 http://ju.outofmemory.cn/entry/116399

我和我的小伙伴们都惊呆了,百度搜了一下,根本不知道是到底少了什么模块,后来找了好久才知道这个缺少的关键模块叫:ZipArchive

好吧,既然缺少这个功能那我们装上就好了,具体步骤为:

获取到zip包

wget http://pecl.php.net/get/zip-1.8.3.tgz

由于我的centos版本很老,php版本是5.2.17,所以我wget http://pecl.php.net/get/zip-1.8.3.tgz老版本的

当然你也可以wget http://pecl.php.net/get/zip-1.10.2.tg 或者wget http://pecl.php.net/get/zip-1.12.4.tgz
解压zip包并进入

tar -zxvf zip-1.8.3.tgz
cd zip-1.8.3
这是一个条命令如果提示没有的话可以通过, yum install php-devel 方式安装 然后执行
phpize

这时候需要获取到本机php-config的位置,方法也很简单可以通过phpinfo()函数得到php的安装信息

也可以直接在终端输入:find / -name php-config
你也许会找到好几个,但是根据自己的安装情况找到对应的目录。

比如我的目录是:/usr/bin/php-config

之后就是简单的编译,安装。注意:configure不加参数会出错

找到路径之后输入

./configure --with-php-config=/usr/bin/php-config

(后面的/usr/bin/php-config路径改成自己的)

如果报错就安装yum -y install zlib-devel,也有可能让你装yum install pcre-deve,最有可能的是让你装yum -y install gcc

配置完./configure之后直接

make
编译,然后
make install
安装一下

注意make install之后会出现一个zip.so保存的路径,这个路径要添加到php.ini里。

比如我的是:

4.png
找到你的php.ini文件位置同样可以通过 find / -name php.ini 也可以通过phpinfo();得到php.ini的位置...

我的是在etc/php.ini

做三项修改,将extension_dir的目录指向你文件生成的目录,注意如果已经之指定过目录,make install时应该会装进去的,但是还是建议将zip.so复制到已经指定过的的目录历,没指定就跳过。

设置php.ini新增:

extension=zip.so

检查:
extension_dir = /usr/lib64/php/modules/

然后重启apache,输入php-m检查有没有zip组件支持。如果提示这个错误:

2.png

很遗憾的告诉你,你需要换另一个版本的ZipArchive来尝试。比如我5.2.17装了最新的1.12版本的就报错,装1.10的就伪静态失效等等各种毛病。1.8完美。

### 如何在PHP中使用和安装ZipArchive扩展 #### 安装环境准备 对于Linux环境下,特别是基于RedHat/CentOS系统的服务器,在安装`ZipArchive`之前需确保已经安装了必要的依赖项。这包括但不限于`php-devel`包以及构建工具链如`cmake`,因为这些是编译并使能`libzip`所必需的[^3]。 #### 安装Libzip库 由于`ZipArchive`依赖于`libzip`库来执行其功能,因此首先应该安装这个外部库。可以通过源码方式安装最新的稳定版本以获得更好的兼容性和性能表现。如果是在CentOS/RHEL环境中,则可能还需要通过命令行添加相应的支持: ```bash yum install cmake ``` 接着下载并按照官方指南完成`libzip`的安装过程。 #### 启用PHP中的Zip模块 一旦`libzip`被正确设置好之后,就可以着手配置PHP本身的支持了。对于大多数发行版而言,最简单的方法就是直接利用包管理器提供的预编译二进制文件来进行操作;然而如果是自定义编译过的PHP实例或者是想要手动控制的话,则需要做更多工作。例如,在某些情况下,可以编辑PHP配置文件(通常是位于`/etc/php.d/`目录下的`.ini`文件),加入如下行以便加载ZIP模块: ```bash echo "extension=zip.so" >> /etc/php.d/zip.ini ``` 另外一种方法则是寻找特定版本对应的`phpize`工具路径,并据此进行动态扩展的编译与链接。比如针对PHP 8.1版本的情况,可采用以下步骤查找合适的`phpize`位置并激活它: ```bash find / -name phpize cd 到找到的phpize所在目录 ./configure && make && make install ``` 最后一步是要确认新添加的功能确实可用,可通过创建一个小脚本测试是否能够成功调用到`ZipArchive`对象及其成员函数[^5]。 #### 使用ZipArchive类 当一切就绪后,便可以在应用程序代码里引入此特性了。下面给出一段简单的例子展示怎样打包一组文件成ZIP档案: ```php <?php $zip = new \ZipArchive(); $res = $zip->open('example.zip', \ZipArchive::CREATE); if ($res === TRUE) { // 添加单个文件 $zip->addFile('/path/to/file.txt', 'newname.txt'); // 或者批量处理整个目录的内容 function addFolderToZip($dir, &$zip){ $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath($dir))); foreach ($iterator as $key=>$value) { if(!$value->isDir()){ $relativePath = substr($value->__toString(), strlen($dir)+1); $zip->addFile(realpath($key), $relativePath); } } } addFolderToZip("/source/folder/path/", $zip); $zip->close(); } else { echo 'Failed to create archive.'; } ?> ``` 这段程序会尝试打开名为`example.zip`的新存档或将现有同名文件重写为新的压缩包形式。随后向其中追加指定路径上的文本文件或是复制某子树结构内的所有条目进去。完成后记得关闭资源释放句柄[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值