Solution 1 :
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
.
-
Comment ajouter un référentiel qui fournit PHP 5.4 dans yum ?
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
-
Cela peut-il remplacer de manière transparente la version actuelle de PHP 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
-
Comment puis-je revenir au référentiel 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
-
Y aura-t-il un risque de casser les 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 à jour 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
. (Il s'agit d'une VM de développement avec un instantané actuel...)
De plus, n'activez PAS le référentiel Remi par défaut - dans le passé, j'étais intelligent et je l'ai activé par défaut et les choses se sont cassées, même avec la priorité du référentiel.
Solution 2 :
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 quels packages installés existants doivent être remplacés, 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 notez 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 existe d'autres packages que php* dans cette liste, vous ne pouvez pas passer de manière transparente à 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), il ne devrait donc y avoir aucun problème, sauf si vous utilisez d'autres référentiels tiers qui ont des packages installés en fonction de la version php spécifique installé.
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 le fait que cela soit "transparent", tout changement de logiciel survenant pendant que les utilisateurs sont en mesure d'accéder au site Web devrait avoir des conséquences pleinement comprises. Les bibliothèques partagées 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 de les tester d'abord sur une machine hors production pour vérifier que le processus fonctionne comme prévu.
3 . Pour passer à un package php54 de base CentOS hypothétique (CentOS 5 utilisait le préfixe php53), il vous suffit d'exécuter les étapes ci-dessus en remplaçant la suppression de php par la suppression de php54w et l'installation de php54w par 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 manquent, vous n'avez généralement pas d'autre choix que d'utiliser directement pecl 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, il ne remplacera donc pas l'installation/la mise à niveau des packages vers lesquels vous n'avez pas l'intention de basculer, et en tant que tel est activé par défaut. /P>
Avis de non-responsabilité :je suis le propriétaire/gestionnaire de Webtatic