在CentOS中安装PHP Zip扩展

73

我正在尝试在CentOS中安装PHP Zip扩展。

我的服务器没有外部互联网访问权限,因此我从PECL自己下载了它:http://pecl.php.net/package/zip。我选择了最新的“稳定”版本1.10.2,并将其传输到了我的服务器。

我运行了以下命令:

pear install zip-1.10.2.tgz

并添加

extension=zip.so

按照指示将zip.so添加到php.ini中。我可以看到zip.so已经被创建并放置在正确的extension_dir文件夹中。然后我重启了apache,并通过运行以下命令来检查它是否已加载:
php -m

尽管如此,“zip”仍未列入该列表。
我是不是漏掉了什么步骤或做错了什么?我认为这应该非常简单,但我开始感到相当愚蠢,哈哈。
其他可能重要的东西:
CentOS Apache 2.2.3 PHP 5.2.16
13个回答

101

这是我在我的机器(Ubuntu)上安装它的方法:

PHP 7:

sudo apt-get install php7.0-zip

PHP 5:

sudo apt-get install php5-zip

编辑:
请确保在此之后重新启动您的服务器。

sudo /etc/init.d/apache2 restart 或者 sudo service nginx restart

注:如果您使用的是 CentOS,请查看上面 cweiske答案
但如果您使用的是基于 Debian 的操作系统,则此解决方案应该可以帮助您安装 php zip 扩展。


1
请确保在此之后重新启动Apache:/etc/init.d/apache2 restart - Leandro
2
你似乎建议使用包管理器来解决或预防任何问题。CentOS 似乎使用 yum 作为包管理器。 - rene
1
对于PHP7.1,使用以下命令安装php7.1-zip: sudo apt install php7.1-zip - CecilMerrell aka bringrainfire
4
有人能够安装php7.2的zip扩展吗?它一直显示**E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'**。我已经尝试了很多变化,但都没有成功,我的PHP版本是7.2.17-1+ubuntu14.04.1+deb.sury.org+3。 - Muhammad Omer Aslam
请注意,问题是关于CentOS而不是Ubuntu(我在标题中试图澄清这一点) - Valerio Bozz

33

您可能拥有几个php.ini文件,一个用于CLI,一个用于apache。运行php --ini以查看CLI ini位置。


感谢您的回复。返回以下内容(抱歉,我不确定如何在评论中换行):已加载配置文件:(无)扫描其他.ini文件:(无)解析其他.ini文件:(无)。此外,find / -name“php.ini”告诉我这是盒子上唯一的php.ini文件。 - Ubunfu
没有加载任何配置文件。那就是你的问题了。我的PHP也显示“配置文件(php.ini)路径”与php--ini。使用$strace -eopen php--ini来找出你的php在哪里查找.ini文件。 - cweiske
很抱歉没有解释就让这个问题搁置了。php --ini显示配置文件路径为/usr/bin...我只需要将它移动到那里吗?此外,如果配置文件中的内容没有生效,PHP是否会使用一组默认值呢? - Ubunfu
是的,有默认值。它们在PHP手册中有记录。尝试将php.ini移动到您找到的路径。 - cweiske

26

只需使用sudo yum install php-zip


3
问题指定了这是针对CentOS而不是Ubuntu。CentOS使用yum而不是apt-get。 - cgclip
1
或者 sudo apt-get install php-zip - Avatar

23

适用于 PHP 7.3 / Ubuntu

sudo apt install php7.3-zip

适用于PHP 7.4

sudo apt install php7.4-zip

"无法找到 php7.3-zip 包" - Black
请注意,该问题是关于CentOS而不是Ubuntu的。 - Valerio Bozz

17

第一步 - 安装必要的扩展程序

sudo apt-get install libz-dev libzip-dev -y

第二步 - 安装PHP扩展

pecl install zlib zip

3步骤 - 重新启动您的Apache

sudo /etc/init.d/apache2 restart

启用PHP ZIP扩展

如果不起作用,您可以检查phpinfo中是否调用了zip.ini,以检查是否已包含zip.so。


错误:`/tmp/pear/temp/zip/configure --with-php-config=/usr/local/bin/php-config' 失败。 - Aommy Indy
请注意,此问题涉及的是CentOS而不是Ubuntu。 - Valerio Bozz

7

针对 Ubuntu 16.04 上的 PHP 7.3

sudo apt-get install php7.3-zip


请注意,该问题是关于CentOS而不是Ubuntu的。 - Valerio Bozz

5

在CentOS上安装php7.2的Zip扩展的最佳方法如下:

  1. 使用yum命令搜索可用的扩展

    yum search zip

  2. 这将列出所有zip包。我们需要寻找php7.2 zip包 enter image description here

  1. 然后,如果您的PHP版本是7.2,则运行以下命令

    yum install ea-php72-php-zip

这肯定会解决您的问题。

干杯!!


3
在Amazon Linux 2和PHP 7.4上,我终于成功安装了PHP-ZIP,希望以下步骤能帮助其他人(请注意,yum安装命令中还包括一些常见模块,您可能不需要全部安装):
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

sudo yum -y install yum-utils

sudo yum-config-manager --enable remi-php74

sudo yum update

sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json

sudo pecl install zip

php --modules

sudo systemctl restart httpd

1
不需要“pecl install”,ZIP扩展可在“remi-php74”存储库中获得! - Remi Collet
直到我这样做之前,它才出现在我的已安装模块列表中。但是,在我的多次尝试中,我可能还有其他问题。感谢您的提醒。 - Dr. Aaron Dishno

1

我尝试在CentOS 7上安装php 7.1。在我的情况下,remi仓库中没有可用的php-zip包,但我可以使用不同的名称进行安装。

yum install php-pecl-zip

如果您无法通过查询php-zip找到它,请尝试搜索php-pecl-zip


"yum install php-zip" 也可以,对于任何扩展名,请不要依赖包名称。 - Remi Collet

1
需要在正在构建的 Docker 镜像中安装 zip 扩展的人可以参考以下 Dockerfile
FROM php:8.1-apache

RUN apt-get update \
  && apt-get install -y libzip-dev \
  && docker-php-ext-install zip

这个找了好久啊,感谢你把它放在这里! - jamesmortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接