Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CentOS 7上安装从头编译的PHP7.4的zip扩展?_Php_Centos_Zip_Centos7_Libzip - Fatal编程技术网

如何在CentOS 7上安装从头编译的PHP7.4的zip扩展?

如何在CentOS 7上安装从头编译的PHP7.4的zip扩展?,php,centos,zip,centos7,libzip,Php,Centos,Zip,Centos7,Libzip,我有一个PHP7.4.2安装,它是通过从头编译安装的。我使用的configure命令如下所示: './configure' '--with-apxs2=/usr/bin/apxs' '--with-curl=/usr' '--with-gd' '--with-gettext' '--with-jpeg-dir=/usr' '--with-freetype-dir=/usr' '--with-openssl' '--with-mcrypt=/usr/local/lib' '--with-mhash

我有一个PHP7.4.2安装,它是通过从头编译安装的。我使用的configure命令如下所示:

'./configure' '--with-apxs2=/usr/bin/apxs' '--with-curl=/usr' '--with-gd' '--with-gettext' '--with-jpeg-dir=/usr' '--with-freetype-dir=/usr' '--with-openssl' '--with-mcrypt=/usr/local/lib' '--with-mhash' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pcre-regex' '--with-pear' '--with-png-dir=/usr' '--with-xsl' '--with-zlib' '--with-zlib-dir=/usr' '--with-iconv' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-soap' '--enable-sockets' '--enable-zip'
现在,当我尝试使用ZipArchive类时,我意识到没有安装或启用zip扩展。它没有显示在我的phpinfo中,代码显示错误

致命错误:未找到类“ZipArchive”

我认为用于添加zip扩展的配置选项在PHP7.4版本中已经更改,我应该使用-with-zip而不是-enable-zip

我尝试使用pecl安装扩展,但它返回以下错误:

正在检查libzip。。。对 正在检查PHP版本。。。7.4 正在检查pkg配置/bin/pkg配置 正在检查libzip。。。找不到 配置:错误:请重新安装libzip发行版

我尝试从pecl存档安装扩展,configure命令返回相同的错误。我在CentOS 7上这样做,一些帖子建议安装libzip-devel包。但它仅作为第三方存储库的一部分提供。由于这是一个生产环境,我也不能这样做


如果我从头开始重新安装PHP,再次运行configure命令,它会安装扩展吗?它会影响我现有的设置吗?我已经安装并启用了SVN extension,zip扩展需要libzip库。所以您可以从源代码处编译它。但是,libzip库需要zlib库。为了确保你不会错过任何重要的事情,最好让你看看我是怎么做的

这就是我在centos 7服务器上从源代码编译7.4的方式 首先,我要安装软件包更新并安装丢失的软件包:

sudo yum update
sudo yum -y install lzip oniguruma oniguruma-devel

# OR if you cant find the packages you can use RPMs - example:
curl https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-5.9.5-3.el7.x86_64.rpm --output oniguruma-5.9.5-3.el7.x86_64.rpm
rpm -Uvh oniguruma-5.9.5-3.el7.x86_64.rpm
安装CMake:

编译zlib:

为zip扩展编译libzip:

复制生成的文件并将其添加到变量中

sudo cp /home/centos/libzip-1.6.1/build/libzip.pc /usr/local/lib64/pkgconfig/libzip.pc

# Also add this to the env variables for each session - later in the guide
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig/
编译php:

如果php已经通过软件包安装程序安装,则删除它

sudo yum-config-manager --disable remi-php74
sudo yum remove php php-cli php-common php-opcache php-mcrypt php-gd php-curl php-fpm php-dom php-intl php-pecl-mongodb php-mbstring php-xml php-pear php-devel php-pecl-zip
编译的额外信息:

make-j2定义了要编译多少核心线程

您应该注意的另一行是:

--with-zlib=~/libzip-1.6.1/build/ \
在配置过程中,使用您自己需要的软件包

php主要从这里运行:/usr/bin/php

您构建的php将位于这里:/usr/local/php7/bin/php

因此,您可能需要覆盖它:

sudo mv/usr/local/php7/bin/php/usr/bin/php


这还不是全部,但它涵盖了zip扩展的每个重要部分。

zip扩展需要libzip库。所以您可以从源代码处编译它。但是,libzip库需要zlib库。为了确保你不会错过任何重要的事情,最好让你看看我是怎么做的

这就是我在centos 7服务器上从源代码编译7.4的方式 首先,我要安装软件包更新并安装丢失的软件包:

sudo yum update
sudo yum -y install lzip oniguruma oniguruma-devel

# OR if you cant find the packages you can use RPMs - example:
curl https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-5.9.5-3.el7.x86_64.rpm --output oniguruma-5.9.5-3.el7.x86_64.rpm
rpm -Uvh oniguruma-5.9.5-3.el7.x86_64.rpm
安装CMake:

编译zlib:

为zip扩展编译libzip:

复制生成的文件并将其添加到变量中

sudo cp /home/centos/libzip-1.6.1/build/libzip.pc /usr/local/lib64/pkgconfig/libzip.pc

# Also add this to the env variables for each session - later in the guide
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig/
编译php:

如果php已经通过软件包安装程序安装,则删除它

sudo yum-config-manager --disable remi-php74
sudo yum remove php php-cli php-common php-opcache php-mcrypt php-gd php-curl php-fpm php-dom php-intl php-pecl-mongodb php-mbstring php-xml php-pear php-devel php-pecl-zip
编译的额外信息:

make-j2定义了要编译多少核心线程

您应该注意的另一行是:

--with-zlib=~/libzip-1.6.1/build/ \
在配置过程中,使用您自己需要的软件包

php主要从这里运行:/usr/bin/php

您构建的php将位于这里:/usr/local/php7/bin/php

因此,您可能需要覆盖它:

sudo mv/usr/local/php7/bin/php/usr/bin/php

这还不算全部,但它涵盖了zip扩展的每个重要部分。

在CentOS中,您可以使用yum

您可以执行以下操作,它应该会起作用。我刚刚用PHP7.4在一个全新的CentOS中发送了它

您不需要重新安装PHP,只需添加扩展即可

安装需要以root用户身份运行的依赖项 使用PECL安装zip 编辑/etc/php.ini以注册新模块 您需要以root用户身份打开

extension=zip.so;
在CentOS中,您拥有yum

您可以执行以下操作,它应该会起作用。我刚刚用PHP7.4在一个全新的CentOS中发送了它

您不需要重新安装PHP,只需添加扩展即可

安装需要以root用户身份运行的依赖项 使用PECL安装zip 编辑/etc/php.ini以注册新模块 您需要以root用户身份打开

extension=zip.so;
试试这个:

yum install php74-libzip.x86_64
yum install php-pecl-zip
试试这个:

yum install php74-libzip.x86_64
yum install php-pecl-zip

为什么不简单地使用内置的ZIP支持重新编译PHP呢?根据它的说法,当存在维护良好的软件包时,应该只从源代码处安装yum-install-libzip-develWhy building?为什么不简单地使用内置的ZIP支持重新编译PHP呢?根据它的说法,当存在维护良好的软件包时,应该只从源代码处安装yum-install-libzip-develWhy building?