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