Comment mettre à niveau vers la dernière version PHP dans CentOS avec yum?

22

J'ai trouvé quelques articles de blog à ce sujet, mais c'est plutôt un manque de descriptions sur les effets secondaires possibles.

Je pourrais vraiment utiliser certains détails sur ces étapes:

  1. Comment ajouter un dépôt qui fournit PHP 5.4 dans yum
  2. Cela peut-il remplacer de manière transparente la version PHP actuelle dans CentOS?
  3. Comment puis-je revenir au dépôt officiel lorsqu'il prend en charge PHP 5.4? (5.3.3 actuel dans mon système)
  4. Y aura-t-il un potentiel de rupture des modules PHP que j'utilise actuellement?

Remarque

Les gens ont réussi à mettre à niveau avec la même méthode sur les versions plus récentes et suggèrent de supprimer des versions spécifiques dans la question. Bien qu'il soit bon d'épingler les versions au cas où des versions plus récentes casseraient quelque chose, j'aimerais garder la dernière version réussie suggérée par la communauté comme note.

N'hésitez pas à le mettre à jour si vous avez réussi la mise à niveau sur d'autres versions.

  • Versions PHP: 5.4, 5.5, 5.6
  • Version CentOS: 5, 6
Vicaire
la source

Réponses:

19

J'ai suivi les instructions d' Install Apache / PHP 5.4.10 sur Fedora 17/16, CentOS / RHEL 6.3 / 5.8 avec une légère modification. Cela a pris peut-être 10 minutes. Mes commandes exactes sont présentées ci-dessous. Notez que la première commande a dû être modifiée par rapport à ce qui est indiqué dans l'article. Le changement était de epel-release-6-7.noarch.rpmà epel-release-6-8.noarch.rpm.

  1. Comment ajouter un dépôt qui fournit PHP 5.4 en miam?

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
    
  2. Cela peut-il remplacer de manière transparente la version PHP actuelle dans CentOS? Pour moi, les commandes suivantes ont fonctionné et aucune de mes pages Web PHP existantes ne s'est cassée. Votre kilométrage peut varier.

    yum --enablerepo=remi install httpd php php-common
    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    service httpd restart
    
  3. Comment puis-je revenir au dépôt officiel lorsqu'il prend en charge PHP5.4? Je n'ai pas testé les commandes pour supprimer et réinstaller PHP à partir des référentiels CentOS, mais cela devrait fonctionner.

    # Remove the Remi packages. Note the reversed command order
    yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    yum  remove httpd php php-common
    # Install the CentOS packages. 
    yum install httpd php php-common
    yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    
  4. Y aura-t-il un potentiel de rupture des modules PHP que j'utilise actuellement? Oui. En utilisant une version récente de CentOS (6.2?) Avec Zend installé à l'aide du programme d'installation de Zend, la mise à niveau ci-dessus a cassé Zend.

Toutes les commandes ci-dessus ont été exécutées en tant que root. La meilleure pratique consiste à se connecter en tant qu'utilisateur non privilégié et à l'utiliser sudo. (Ceci est une machine virtuelle de développement avec un instantané actuel ...)

De plus, n'activez PAS le référentiel Remi par défaut - dans le passé, je suis devenu intelligent et je l'ai activé par défaut et les choses se sont brisées, même avec la priorité du référentiel.

Jeff Benshetler
la source
3
Les choses deviennent souvent laides avec remi. Je préfère utiliser le référentiel iuscommunity pour un php à jour. Une autre façon est d'utiliser le repo du serveur Zend, mais cela me semble un peu trop lourd.
Kazimieras Aliulis
1
@KazimierasAliulis Malheureusement, le dépôt IUS induit un enfer de dépendance en utilisant des noms de package et de fichier incompatibles. Je ne peux pas recommander de l'utiliser.
Michael Hampton
Description très complète. Comme je n'ai pas de code lié au moteur Zend, cela ne devrait pas avoir d'importance dans mon cas, non?
Vicary
1
@MichaelHampton J'utilise yum --enablerepo=remi updateet il prend en charge tous les packages php connexes, ressemble à une meilleure solution. Le serveur fonctionne sans problème depuis quelques jours, merci pour toutes les infos.
Vicary
1
Remarque: le gars a oublié d'ajouter phpà la liste d'installation, ce qui m'a causé beaucoup de problèmes car apache n'a pas servi les fichiers php, alors n'oubliez pas d'ajouter ceci lors de l'utilisation
eric.itzhak
9

Une amélioration par rapport à l'autre réponse Webtatic:

1 . Utilisation du guide sur http://www.webtatic.com/packages/php54/ :

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

2. Vous devez d'abord voir ce que les packages installés existants doivent remplacer, vous pouvez le faire en utilisant yum shell pour combiner la suppression de php-common et l'installation de php54w-common en une seule transaction (afin que les dépendances partagées ne soient pas supprimées)

yum shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n

Ne dites pas «y» aux résultats, mais prenez note de tous les packages mentionnés dans «Suppression des dépendances», par exemple

Removing for dependencies:
 php
 php-cli
 php-pear
 php-pecl-memcache
 php-mysql

S'il y a d'autres packages que php * dans cette liste, vous ne pouvez pas passer en toute transparence à Webtatic PHP 5.4, mais vous devrez rechercher des alternatives. Webtatic a des packages de remplacement pour tous les packages php de base (voir les packages répertoriés sur la page liée à 1. pour confirmation), donc il ne devrait pas y avoir de problèmes, sauf si vous utilisez d'autres référentiels tiers dont les packages sont installés en fonction de la version php spécifique installée.

Pour le reste de l'installation (toujours dans le shell yum), il vous suffit de supprimer ces packages et d'installer leurs homologues php54w- *:

> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y

Vous ne devriez alors voir que les packages que vous avez définis pour être supprimés et installés dans la liste, et vous pouvez confirmer l'installation pour basculer. Tous les services en cours d'exécution avec php chargé devront être redémarrés, par exemple httpd ou php-fpm.

En ce qui concerne la transparence, tout changement de logiciel qui se produit pendant que les utilisateurs peuvent accéder au site Web devrait avoir des conséquences parfaitement comprises. Les bibliothèques partagées qui sont supprimées et ajoutées lorsqu'un processus ne les a pas déjà chargées peuvent potentiellement se charger alors que la bibliothèque partagée n'est pas là. Il est préférable d'effectuer des mises à niveau logicielles comme celle-ci hors ligne, et de préférence testées sur une machine non-production d'abord pour vérifier que le processus fonctionne comme prévu.

3. Pour basculer vers un hypothétique package de base Centp php54 (CentOS 5 utilise le préfixe php53), vous exécutez simplement les étapes ci-dessus en remplaçant la suppression de php par la suppression de php54w et l'installation de php54w avec l'installation de php54, par exemple

yum shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y

Cependant, en ce qui concerne le passage à la base hypothétique php54, il n'y aura probablement pas d'alternative pour certains packages (par exemple, il n'y avait pas d'extension php53-pecl-memcache dans CentOS 5) et Webtatic a des packages qui ne sont pas disponibles dans la base CentOS (par exemple php54w -pecl-zendopcache). S'ils sont manquants, vous n'avez généralement pas d'autre option que d'utiliser pecl directement pour les installer.

4. Toute mise à niveau de PHP peut introduire des bogues et les sites Web doivent être retestés. Ce n'est pas spécifique à Webtatic, mais l'idée générale que les nouvelles fonctionnalités introduisent de nouveaux bugs.

Contrairement au référentiel de Remi dans la réponse acceptée, le référentiel Webtatic EL6 n'utilise jamais les mêmes noms de packages que les référentiels de base CentOS, donc ne remplacera pas l'installation / la mise à niveau des packages vers lesquels vous n'avez pas l'intention de basculer, et en tant que tel, il est activé par défaut.

Avertissement: je suis le propriétaire / mainteneur de Webtatic

Andy
la source
La méthode yum shell est vraiment bonne pour l'observation de la dépendance, merci.
Vicaire
@Andy, bonne écriture détaillée, merci. Comment changer le cli par défaut (et seulement le cli) de PHP en 5.4 dans CentOS 6?
Gaia
0

vous pouvez trouver php 5.4.9 ici pour l'installation yum:

http://www.webtatic.com/packages/php54/

vous pouvez faire un "rpm -qa | grep php" pour voir tous vos paquets php actuels et un "rpm -e" pour les supprimer. Je ne connais pas vos modules actuels, mais cela vaut la peine d'être testé avant la mise à niveau.

TheDayIsDone
la source
Vous avez en quelque sorte répondu 1. En ce qui concerne la maintenance du serveur, il ne s'agit pas simplement de l'installer et d'exécuter des tests, je pourrais vraiment utiliser plus d'informations avant de faire quoi que ce soit.
Vicary