为PHP 7.4安装zip扩展名

问题描述 投票:0回答:2

我有一个PHP 7.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()中,并且代码显示了错误

Fatal error: Class 'ZipArchive' not found

我认为用于添加zip扩展名的configure选项在PHP 7.4版本中已更改,我应该使用--with-zip而不是--enable-zip

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

checking libzip... yes checking PHP version... 7.4 checking for pkg-config... /bin/pkg-config checking for libzip... not found configure: error: Please reinstall the libzip distribution

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

如果我再次从头安装PHP并再次运行configure命令,它将安装扩展名吗?这会影响我现有的任何设置吗?我已安装并启用SVN扩展名

php centos zip centos7 libzip
2个回答
0
投票
1步骤-安装所需的扩展名

sudo apt-get install libz-dev -y

2步骤-安装PHP扩展

pecl install zlib zip

3步骤-重新启动Apache

sudo /etc/init.d/apache2 restart


0
投票
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:

cd # installing compiled cmake wget -c https://cmake.org/files/LatestRelease/cmake-3.16.0-Linux-x86_64.tar.gz tar zxvf cmake-3.* # OR install it from source: curl -OL https://github.com/Kitware/CMake/archive/v3.16.5.tar.gz tar zxvf v3.16.5.tar.gz cd CMake-3.* ./bootstrap --prefix=/usr/local sudo make -j2 sudo make install # maybe this is not required: sudo cp ~/CMake-3.16.5/bin/cmake /usr/bin/

编译zlib:

wget -c http://www.zlib.net/zlib-1.2.11.tar.gz tar zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure sudo make -j2 sudo make install

为zip扩展名编译libzip:

cd wget -c https://libzip.org/download/libzip-1.6.1.tar.gz tar zxvf libzip-1.6.1.tar.gz cd libzip* mkdir build cd build cmake .. sudo make -j2 make test sudo make install
复制生成的文件并将其添加到变量中

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

编译的额外信息:https://shaunfreeman.name/blog/compiling-php-7-on-centos

# for some reason libzip-last wont do what you need, so you need to compile it as it's written above sudo yum install httpd-devel git gcc gcc-c++ readline-devel libxml2-devel libzip-last libxslt-devel pkgconfig openssl-devel bzip2-devel curl-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel autoconf bison re2c libicu-devel sudo mkdir /usr/local/php7 cd # OPTION A git clone https://github.com/php/php-src.git cd php-src git checkout PHP-7.4.5 # OPTION B # use the release tar instead of the source branch curl -OL https://github.com/php/php-src/archive/php-7.4.5.tar.gz tar zxvf php-7.4.5.tar.gz cd php-src-php-7.4.5 ./buildconf --force ./configure --prefix=/usr/local/php7 \ --with-config-file-path=/usr/local/php7/etc \ --with-config-file-scan-dir=/usr/local/php7/etc/conf.d \ --with-apxs2=/usr/bin/apxs \ --enable-bcmath \ --enable-fpm \ --with-bz2 \ --with-curl \ --disable-phpdbg \ --disable-phpdbg-webhelper \ --enable-filter \ --enable-gd \ --with-freetype \ --with-jpeg \ --enable-intl \ --with-mysql-sock=/var/lib/mysql/mysql.sock \ --with-openssl \ --enable-simplexml \ --enable-xmlreader \ --enable-xmlwriter \ --enable-pcntl \ --enable-shmop \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --with-xsl \ --enable-opcache \ --enable-calendar \ --enable-sockets \ --enable-mbstring \ --with-readline \ --with-zlib=~/libzip-1.6.1/build/ \ --with-zip \ --enable-exif \ --with-gettext \ --without-sqlite3 \ --with-mhash \ --enable-maintainer-zts sudo make -j2 sudo make install sudo mkdir /usr/local/php7/etc/conf.d sudo cp -v ./php.ini-production /usr/local/php7/lib/php.ini sudo cp -v ./sapi/fpm/www.conf /usr/local/php7/etc/php-fpm.d/www.conf sudo cp -v ./sapi/fpm/php-fpm.conf /usr/local/php7/etc/php-fpm.conf sudo vim /usr/local/php7/etc/conf.d/modules.ini

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扩展名的每个重要部分。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.