web-dev-qa-db-fra.com

Mettre à niveau PHP 7.0 à 7.2 sur Centos

J'ai un serveur de production qui fonctionne PHP 7.0, et je veux passer à 7.2.

Je n'ai rien trouvé en ligne qui suggère que PHP7.0 et 7.2 peuvent coexister. Quelle serait la procédure appropriée? Il suffit de supprimer tous les packages php70w * et d'installer tous ceux php72w?

Il s'agit d'un serveur de production, les erreurs ne doivent pas le faire échouer.

Merci.

5
Michael Chourdakis

Voici la solution pour CentOS 6.x et 7.x:

yum install epel-release

puis installez Remi repo, pour Centos 6.x:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

et pour Centos 7.x:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

vérifier quels PHP packages installés:

yum list installed php*

supprimer le PHP actuel:

yum remove php*

installez les mêmes packages que ceux installés pour 7.0 en utilisant PHP 7.2, par exemple:

yum install --enablerepo=remi-php72 php php-mcrypt php-cli php-Gd php-curl php-mysql php-ldap php-Zip php-fileinfo

vérifier la version de PHP installé:

php -v

Vous n'avez pas besoin de PHP 7.0 et 7.2 coexister sur votre serveur. Si vous avez un problème en utilisant PHP 7.2 vous pouvez toujours réinstaller les anciens PHP 7.0. Si vous n'êtes pas sûr que cela fonctionnera pour vous sur le serveur de production, essayez-le d'abord sur la machine virtuelle. Mais cela a fonctionné pour moi sur de nombreux serveurs de production. PHP n'est pas critique Composant OS, donc le serveur n'échouera jamais si PHP changé. C'est juste votre application web qui peut échouer lors du passage à 7.2, mais comme je l'ai écrit, c'est peu probable et vous pouvez réinstaller une version plus ancienne si cela se produit.

J'ai oublié php.ini. Si vous souhaitez conserver vos personnalisations php.ini dans une autre PHP, faites une copie de php.ini avant d'exécuter yum supprimez php *. Après PHP réinstaller diff saved_php.ini php.ini et regardez ce qui doit être fusionné.

14
NoAngel

Oui, vous pouvez installer plusieurs versions de PHP simultanément, sans avoir à construire quoi que ce soit, uniquement en utilisant des packages RPM.

C'est exactement pourquoi les collections de logiciels ont été conçues.

Voir: Conseils de configuration PHP (sur le passage à FPM et l'utilisation des collections de logiciels pour les versions récentes et/ou multiples de PHP)

Pour PHP 7.2, voir également Assistant de configuration (et choisissez plusieurs versions)

Mais, en effet, la solution de @NoAngel fonctionne également si vous pensez qu'une seule version est suffisante, surtout si vous avez un environnement de test.

3
Remi Collet

Les instructions du dépôt Remi sont liées ci-dessous. Par exemple, si vous avez CentOS version 7.4, sur la ligne de commande:

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
yum install yum-utils
yum-config-manager --enable remi-php72
yum update

Toutes les futures mises à jour pour PHP sera pour la version 7.2.

https://blog.remirepo.net/post/2017/12/04/Install-PHP-7.2-on-CentOS-RHEL-or-Fedora

1
Todd Lahman

Oui, vous pouvez conserver plusieurs versions en même temps. Maintenant que vous avez 7.0 sur le serveur, vous pouvez télécharger la source depuis le site officiel de php et la construire vers un autre emplacement.

Vous pouvez également utiliser mod_fcgid ou php-fpm pour exécuter vos applications Web PHP avec la nouvelle version de php. Vous pouvez vous référer aux étapes ci-dessous pour construire php à partir des sources.

  1. Téléchargez l'archive source php à partir du miroir officiel php.
  2. Extrayez l'archive sur votre serveur, puis changez de répertoire en répertoire extrait.
  3. Installer les dépendances requises pour la construction

yum install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libicu-devel gcc-c ++ libxslt-devel net-snmp-devel readline-devel aspell-devel unixODBC-devel libc-client-devel freetype-devel libvpx- devel enchant-devel libmcrypt-devel krb5-devel libtidy-devel bzip2-devel

  1. Utilisez les commandes ci-dessous pour configurer et construire PHP.

./configure --prefix =/usr/local/php --enable-mbstring --with-curl --with-openssl --with-xmlrpc --enable-soap --enable-Zip --with-Gd - avec-jpeg-dir --avec-png-dir --avec-mysqli --avec-freetype-dir --enable-intl --with-xsl --with-mcrypt --with-zlib --enable-bcmath - -enable-dba --enable-calendar --enable-exif --enable-ftp --enable-pcntl --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm - -enable-wddx --enable-opcache --with-gettext --with-bz2 --with-mhash --with-readline --with-tidy --with-libdir = lib64

note: vous pouvez changer le préfixe si vous voulez changer le répertoire d'installation.

make && make install

Il installera PHP binaires et bibliothèques dans le répertoire préfixe que vous avez mentionné dans la commande configure.

  1. Installez maintenant le module mod_fcgid dans Apache pour utiliser la nouvelle version pour les exécutions de scripts php

yum install mod_fcgid

créez un fichier avec le nom php-fcgi dans le répertoire cgi-bin (le chemin possible est/var/www/cgi-bin), et ajoutez le contenu ci-dessous.

#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=0
exec  /usr/local/php/bin/php-cgi

Attribuez l'autorisation d'exécution au fichier cgi.

AddHandler php7-fastcgi .php
Action php7-fastcgi /cgi-bin/php-fcgi
Options -Indexes +FollowSymLinks +ExecCGI
DirectoryIndex index.php

<IfModule mod_fcgid.c>
         FcgidIdleTimeout 3600
         FcgidProcessLifeTime 3600
         FcgidBusyTimeout 3600
         FcgidIOTimeout 3699
         FcgidConnectTimeout 20
</IfModule>

Vous pouvez maintenant utiliser ce gestionnaire vers n'importe quel hôte virtuel où vous souhaitez utiliser la dernière version PHP.


Avant de le faire en production, vous devez l'essayer sur le système local/dev pour éviter toute erreur inattendue. Aussi ./configure --help peut vous aider à choisir les modules php que vous utilisez actuellement sur le serveur de production.

1
Vaibhav Panmand