Mettre à jour PHP vers PHP 5.5 sous Debian/CentOS

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 :

MAJPHP01

On voit donc bien ici la version de PHP, et sous Debian :

MAJPHP02

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 :

MAJPHP03

Pour désinstaller PHP sous Debian :

apt-get remove --purge php5

MAJPHP06

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) :

MAJPHP04

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

MAJPHP07

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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

13 thoughts on “Mettre à jour PHP vers PHP 5.5 sous Debian/CentOS

  • 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.

    Répondre
    • 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 ?

      Répondre
  • 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

    Répondre
    • Essai plutôt quelque chose du genre php55-gd ou php5-gd comme je le précise dans le tuto

      Répondre
      • j’obtiens le message : No package php5-gd available. Error: Nothing to do

        Répondre
    • pour libvpx.so je ne sais pas, moi je n’avais rien ajouté..

      Répondre
  • non php55-gd ou php5-gd ne fonctoinne pas non plus
    message :
    No package php55-gd available.
    Error: Nothing to do

    Répondre
  • Tout a fonctionné pour moi sous Debian. Merci beaucoup pour le tuto 😉

    Répondre
  • 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…

    Répondre
  • Bonjour,

    je n’arrive plus à accéder à Plesk et tous mes sites sont OFF.

    Comment faire la chose suivante :

    On doit ensuite rétablir la configuration (« /etc/php.ini ») car celle-ci a été supprimée lors de la désinstallation de PHP . .

    J’ai le message « FAILED » lorsque je tape la commande ‘service httpd restart’.

    – Sous CENTOS 6 –

    Répondre
    • 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

      Répondre
  • Bonjour,
    comment réinstaller l’ancienne version php svp.
    Cordialement.

    Répondre

Répondre à Tito Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.