找不到ZipArchive但似乎已安装(PHP 7.2)

时间:2018-02-16 10:48:32

标签: php ziparchive

我正在安装一个在Amazon EC2实例(Amazon Linux 2)上需要ZipArchive的CMS。需求向导说不支持ZipArchive:

enter image description here

但是如果按照我在网上找到的说明尝试安装ZipArchive,服务器会告诉我它已经安装:

[ec2-user@ip-***-**-**-** ~]$ sudo yum install php-zip
Loaded plugins: langpacks, priorities, update-motd
amzn2-core                                                                                                                                                                         | 2.0 kB  00:00:00     
Package matching php-common-5.4.16-43.amzn2.0.1.x86_64 already installed. Checking for update.
Nothing to do

我已经重新启动了httpd服务。

我也尝试过:

[ec2-user@ip-***-**-**-** ~]$ sudo yum install php7.0-zip
Loaded plugins: langpacks, priorities, update-motd
amzn2-core                                                                                                                                                                         | 2.0 kB  00:00:00     
No package php7.0-zip available.
Error: Nothing to do

我也尝试过添加:

extension=zip.so

到php.ini并重新启动httpd服务。仍然没有快乐。

在ZipArchive的PHP手册中,它说“为了使用这些函数,你必须使用--enable-zip configure选项编译带zip支持的PHP。”我不确定在何时何地这样做。我只是用过:

yum install php php-mysql

安装PHP。

差不多有一天试图解决这个问题,我不知道从哪里开始。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:2)

如果你正在使用Remi的repo,我注意到zip模块是一个pecl扩展,所以要安装并启用zip运行

 sudo yum -y install php-pecl-zip

然后重启php-fpm你正在使用NGINX或重启APACHE

 sudo service php-fpm restart
 sudo service httpd restart

您可以安装Remi repo

**RHEL or CentOS**
yum install yum-utils
yum-config-manager --enable remi-php72

See instructions on Remi Repo

答案 1 :(得分:1)

我遇到了同样的问题(亚马逊Linux 2 AMI)试图安装Laravel。 问题是这个AMI使用libzip 0.10.1,而至少需要0.11,如果你检查你的扩展文件夹(在这个AMI:/ usr / lib64 / php / modules中),文件zip.so就会丢失。因此,如果在php.ini文件中启用扩展,则会在apache的日志中出现错误。 我使用Remi的RPM存储库解决了这个问题,以安装libzip 1.1.3。这就是我所做的:

  1. 安装epel repo(需要安装Remi' RPM)
  2. 安装Remi' s repo
  3. 从repo安装libzip。您可以检查新的libzip版本,即:

    $ yum list "*libzip*"
    Installed Packages
    libzip-last.x86_64         1.1.3-1.el7.remi            installed
    
  4. 既然你有一个兼容的libzip,你可以编译zip扩展:从你的tmp文件夹中的PECL下载包,解压缩文件和包根:

    $ sudo phpize
    $ sudo ./configure
    $ sudo make
    $ sudo make install
    
  5. 在make install命令之后
  6. ,输出应为:

    Installing shared extensions:     /usr/lib64/php/modules/
    

    如果你进入那个目录,现在你应该终于看到了zip.so文件。

  7. 更改您的php.ini添加

    extension=zip
    
  8. 重新启动网络服务器并检查您的php信息。这就是我在我看到的:

    Zip enabled
    Zip version 1.15.2
    Libzip version  0.11.2
    
  9. 在我的情况下,我能够安装laravel。

答案 2 :(得分:0)

我在Centos 7和PHP 7.3上也遇到了类似的问题。
我可以通过以下方式解决它:

sudo yum install php-pecl-zip.