web-dev-qa-db-fra.com

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

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 en yum
  2. Cela peut-il remplacer de manière transparente la version actuelle PHP 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
22
Vicary

J'ai suivi les instructions de Installer 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 façon transparente la version actuelle PHP dans CentOS? Pour moi, les commandes suivantes ont fonctionné et aucune de mes existantes = PHP pages Web cassées. 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 ceux-ci devraient 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 PHP modules que j'utilise actuellement [- sic]? 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 à utiliser Sudo. (Ceci est un développement VM 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.

19
Jeff Benshetler

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 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), il ne devrait donc 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 yum Shell), 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 de faire 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 package php54 de base CentOS hypothétique (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 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 bogues.

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

9
Andy

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 de les tester avant la mise à niveau.

0
TheDayIsDone