Mettre à jour PHP vers PHP 5.5 sous Debian/CentOS
Sommaire
I. Présentation
Nous allons ici voir comment mettre à jour PHP vers sa dernière version au moment de l'écriture de ce billet c'est à dire de la version 5.5.8 (sortie le 9 janvier 2014). Dans le contexte du tutoriel, je vais effectuer les manipulations sur une Debian 7 et une CentOS 6 dont les versions stables de PHP sont respectivement 5.4.4 et 5.3.3. La version "stable" est la version que nous allons trouver par défaut lorsque nous installons PHP (ou un autre paquet) sans modifier les dépôts d'une quelconque manière.
Note : Il est important, dans la mesure du possible, de faire une sauvegarde du serveur (un snapshot si c'est une machine virtuelle par exemple).
Pour rappel, il est possible de voir rapidement la version de PHP installée en ligne de commande avec la commande suivante :
php -v
Lorsque nous utilisons les versions standards, nous verrons ce résultat sous CentOS :
On voit donc bien ici la version de PHP, et sous Debian :
II. Désinstallation de PHP
On va ici passer par une désinstallation de PHP afin d'éviter les conflits entre les versions de paquet. On doit donc sauvegarder par précaution nos fichiers de configuration dans un répertoire que nous allons également créer :
mkdir /root/configphp cp -Rf /etc/php* /root/configphp
On supprime ensuite la version de PHP présente sur notre machine, utiliser cette ligne de commande sous CentOS :
yum remove php php-cli php-common && yum clean all
On verra alors que la version 5.3.3 de PHP et ses dépendances vont être désinstallées :
Pour désinstaller PHP sous Debian :
apt-get remove --purge php5
III. Téléchargement des dépôts
Nous allons à présent télécharger et installer les dépôts contenants la dernière version de PHP. Il faut savoir que si par défaut lors de l'installation de PHP nous n'avons pas la dernière version qui s'installe, c'est parce que les dépôts qui sont par défaut présents dans les distributions ne contiennent que la version dite "stable" qui n'est donc jamais la dernière version (qu'on appelle unstable ou testing car encore en développement et en test).
- Procédure de téléchargement des dépôts sous Centos :
On utilise la commande yum qui est capable de télécharger et installer des dépôts via son option "install" :
yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/epel-release-6-5.noarch.rpm yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm
- Procédure de téléchargement des dépôts sous Debian :
On va, sous Debian, ajouter deux lignes de dépôts qui sont de simples URL dans le fichier contenant les dépôts ("/etc/apt/sources.list") :
echo "deb http://packages.dotdeb.org wheezy-php55 all" >> /etc/apt/sources.list echo "deb-src http://packages.dotdeb.org wheezy-php55 all" >> /etc/apt/sources.list
On télécharge et installe ensuite la clé de signature du dépôt ce qui permet d'éviter des erreurs lors des installations et mises à jour :
wget http://www.dotdeb.org/dotdeb.gpg apt-key add dotdeb.gpg
Puis on met à jour les dépôts en question :
apt-get update
IV. Installation de PHP 5.5.x
On réinstalle les paquets PHP 5.5.8 , voici la ligne de commande sous CentOS, j'installe ici beaucoup d'extensions et de modules qui ne sont pas forcément utiles, vous pouvez les enlever de la ligne de commande si vous n'en n'avez pas besoin :
yum install -y php55u php55u-soap php55u-process php55u-pear \ php55u-mysql php55u-mcrypt php55u-mbstring php55u-gd php55u-devel php55u-json
On voit donc l'ensemble des paquets qui vont être installés ainsi que leur version (5.5.8 dans notre cas sous CentOS) :
et la ligne de commande sous Debian, j'installe ici beaucoup d'extensions et de modules qui ne sont pas forcément utiles, vous pouvez les enlever de la ligne de commande si vous n'en n'avez pas besoin :
apt-get install php5 php5-mysql php5-common php5-mcrypt php5-dev php5-gd
On peut ensuite s’assurer que la version de PHP est bien la bonne avec la commande suivante :
php –v
On doit ensuite rétablir la configuration (« /etc/php.ini ») car celle-ci a été supprimée lors de la désinstallation de PHP . Il est préférable de ne pas backuper l’ancienne configuration mais plutôt de réécrire les valeurs modifiées à la main dans la nouvelle configuration.
On pourra, pour finir, redémarrer le service web Apache2 qui est le service le plus utilisé en couplage avec PHP, pour CentOS :
service httpd restart
Pour Debian :
service apache2 restart
Note : Il est important de faire un test sur l’ensemble des types de services web hébergés (CMS WordPress, Applications web, site web développé à la main) pour être sûr qu’il ne manque pas de modules PHP ou d’extensions particulières. Et, à contrario, de ne pas installer d'extensions inutilisées comme les commandes ci-dessus l'indiquent. Vérifiez donc les extensions utilisées sur votre système avant la mise à jour.
Pensez à regarder vos logs lors de l'utilisation des services web après la mise à jour afin de voir si des extensions sont manquantes ou si des problèmes apparaissent.
bonjour, merci pour ce tuto simple et précis, chez moi ça a fonctionner sauf qu’à la fin si je fait php -v j’obtiens ceci :
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/gd.so’ – libvpx.so.0: cannot map zero-fill pages: Cannot allocate memory in Unknown on line 0
PHP 5.5.12 (cli) (built: May 1 2014 13:29:22)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
comment est-ce que je peux corriger cela ??
Merci.
Bonjour,
la librairie Php GD a t elle également été mise à jour vers 5.5 ? le « libvpx.so » ne me dit en revanche rien du tout, c’est une librairie additionnelle ? Regarde dans ton php.ini si les des extension additionnelle sont chargés dans la forme suivante : extension=pdo_sqlite.so
extension=sqlite.so
D’aprés ce que je vois cela peut aussi être du à une de tes plateformes web qui ne serait pas compatible avec Pph5.5. Ce n’est pas forcément cela mais c’est une possibilité. Tu peux essayer de désactiver tes vhost pour voir lequel peut poser problème. Tes vhost continues à fonctionner ou cela bloque tout le serveur web ?
Bonjour,
Non GD n’est plus disponible après la mise à jour de php
mais à part ça tout fonctionne.. je n’arrive pas à réinstaller GD avec yum install php-gd . j’ai plein de message d’erreur de ce genre : conflicts with file from package php55u-common-5.5.12-1.ius.centos6.x86_64
Essai plutôt quelque chose du genre php55-gd ou php5-gd comme je le précise dans le tuto
j’obtiens le message : No package php5-gd available. Error: Nothing to do
pour libvpx.so je ne sais pas, moi je n’avais rien ajouté..
non php55-gd ou php5-gd ne fonctoinne pas non plus
message :
No package php55-gd available.
Error: Nothing to do
Tout a fonctionné pour moi sous Debian. Merci beaucoup pour le tuto 😉
Sous centos (6.5) il y a un souci. En désinstallant PHP 5.3, phpmyadmin est désinstallé également et n’est pas réinstallé avec la nouvelle version de PHP.
Il faut donc le réinstaller après PHP…
! Attention !
Ne pas faire ceci [apt-get remove –purge php5] si vous utilisez
OwnCloud. Cela désinstalle tout !!
A éviter. Faites plutôt un upgrade vers php 5.5 : http://memo-linux.com/installer-php-5-5-sur-debian-wheezy/
Bonjour,
je n’arrive plus à accéder à Plesk et tous mes sites sont OFF.
Comment faire la chose suivante :
Hello
J’ai la meme erreur, avez vous résolu ce pb ?
Démarrage de httpd : httpd: Syntax error on line 857 of /etc/httpd/conf/httpd.conf: Could not open configuration file /etc/httpd/conf.d/suphp.conf: No such file or directory
Merci
Ludo
Bonjour,
comment réinstaller l’ancienne version php svp.
Cordialement.