1
votes

Comment installer l'extension zip pour PHP 7.4 compilée à partir de zéro sur CentOS 7?

J'ai une installation PHP 7.4.2, qui est installée en compilant à partir de zéro. La commande configure que j'ai utilisée est la suivante:

'./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'

Maintenant, quand j'ai essayé d'utiliser la classe ZipArchive , j'ai réalisé que le zip n'est pas installée ou activée. Il n'apparaît pas dans mon phpinfo () et le code affiche une erreur

Erreur fatale: Classe 'ZipArchive' introuvable

Je pense que l'option de configuration pour ajouter l'extension zip a été modifiée dans les versions PHP 7.4 et j'aurais dû utiliser --with-zip au lieu de --enable-zip code >.

J'ai essayé d'utiliser pecl pour installer l'extension et elle revient dans l'erreur suivante:

vérification de libzip ... oui vérification de la version PHP ... 7.4 vérification de pkg-config ... / bin / pkg-config recherche de libzip ... introuvable configure: error: Veuillez réinstaller la distribution libzip

J'ai essayé d'installer l'extension à partir de l'archive pecl et la commande configure a renvoyé la même erreur. Je fais cela sur CentOS 7 et certains articles suggèrent d'installer le package libzip-devel . Mais il n'est disponible que dans le cadre d'un référentiel tiers. Comme il s'agit d'un environnement de production, je ne peux pas non plus le faire.

Si je réinstalle PHP à partir de zéro en exécutant à nouveau la commande configure, va-t-il installer l'extension? Cela affectera-t-il l'une de mes configurations existantes? J'ai installé et activé l'extension SVN


3 commentaires

Pourquoi ne pas simplement recompiler PHP avec le support ZIP intégré?


Selon centos. pkgs.org/7/centos-x86_64/... cela devrait être simplement yum install libzip-devel


Pourquoi construire à partir de sources alors que des packages bien entretenus existent? rpms.remirepo.net/wizard


3 Réponses :


2
votes

L'extension zip nécessite la bibliothèque libzip. Vous pouvez donc le compiler à partir des sources. Cependant, la bibliothèque libzip nécessite la bibliothèque zlib. Pour vous assurer que vous ne manquerez rien d'important, le mieux si je vous montre comment je le fais.

Voici comment je compile 7.4 à partir des sources sur nos serveurs centos 7

D'abord je J'installe la mise à jour du package et installe les packages manquants:

--with-zlib=~/libzip-1.6.1/build/ \

Installation de CMake:

# 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
Compilez le zlib:
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

Compilez le libzip pour l'extension zip:

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/

Copiez le fichier construit et ajoutez-le aux variables

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

Compilation de php:

si php est déjà installé via un programme d'installation de package, supprimez-le.

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

Informations supplémentaires pour la compilation: https://shaunfreeman.name/compiling-php-7-on-centos

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/

le make -j2 définit la quantité de threads de base que vous souhaitez utiliser pour compiler.

L'autre ligne que vous devriez remarquer est celle-ci:

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

Pendant le configuration utilisez le paquet de votre propre besoin.

php fonctionne principalement à partir d'ici: /usr/bin/php

Et votre php construit sera localisé ici: /usr/local/php7/bin/php

donc vous devrez peut-être l'écraser:

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

Ce n'est pas tout, mais cela couvre toutes les parties importantes avec l'extension zip.


0 commentaires

1
votes

Dans CentOS, vous avez yum

Vous pouvez faire ce qui suit et cela devrait fonctionner. Je viens de l'envoyer dans un nouveau CentOS avec PHP 7.4.

Vous n'avez pas besoin de réinstaller PHP, il vous suffit d'ajouter l'extension.

Installer les dépendances (vous devrez exécuter en tant que root)

extension=zip.so;

Installez zip en utilisant PECL

pecl install zip

Modifiez /etc/php.ini pour enregistrer le nouveau module

(vous devrez ouvrir en tant que root)

yum install pcre-devel gcc zlib zlib-devel  libzip-devel make


0 commentaires

0
votes

Essayez ceci:

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


0 commentaires