Statistiques de versions de PHP - octobre 2014

28 octobre 2014php, stats

This post is also available in English.

J’ai plusieurs fois collecté des statistiques à propos de l’utilisation des différentes versions de PHP : la première fois était en septembre 2011 et la plus récente était il y a presque un an, en novembre 2013. À ce moment là, PHP 5.2 représentait encore 34.4% des installations de PHP, avec PHP 5.3 en tête à 48.7%.

Les données présentées dans cet article ont été collectées le week-end du 18 octobre 2014. Les versions stables de PHP sont alors PHP 5.4.34 (qui est qualifiée de old-stable), PHP 5.5.18 et PHP 5.6.2. PHP 5.3 n’est plus maintenue depuis le 14 août 2014 et PHP 5.2 n’est plus supportées depuis presque 4 ans.


Serveurs Web

Avant de commencer à parler de versions PHP, voici la liste des serveurs Web les plus fréquemment identifiés lors de ma collecte de données :

  • Apache : 5,644,243 — 58.65%
  • IIS : 1,496,967 — 15.56%
  • nginx : 1,410,170 — 14.65%
  • Autres : 456,985 — 4.75%
  • GSE : 312,448 — 3.25%
  • cloudflare-nginx : 134,131 — 1.39%
  • LiteSpeed : 107,378 — 1.12%
  • Oversee Turing v1.0.0 : 61,127 — 0.64%

Sous forme graphique, en ne représentant que les premiers résultats :

Apache est toujours en première place — et de loin — mais il perd petit à petit du terrain, principalement au profit de nginx, qui est passé en un an de 7.9% à 14.8%. IIS reste en seconde place, mais pourrait bien descendre d’un cran d’ici à ma prochaine collecte de données !


Versions majeures de PHP

Aucune surprise au niveau des versions majeures de PHP :

  • PHP 3 : 415 — 0.02%
  • PHP 4 : 106,866 — 4.15%
  • PHP 5 : 2,470,731 — 95.84%
  • PHP 6 : 36 — 0.00%
  • PHP 7 : 3 — 0.00%

PHP 5 est en tête, de loin1 — ce qui est, admettons-le, fort logique.

Toutefois, un nombre important de serveurs sont encore sous PHP 4, dont la dernière version a été publiée en août 2008.


Versions mineures de PHP

Si on passe aux versions mineures de PHP, pour PHP >= 3.x et PHP <= 7.x et en ne conservant que les versions qui sont remontées 10 fois ou plus, on obtient les données suivantes :

  • PHP 3.0 : 402 — 0.02%
  • PHP 3.2 : 12 — 0.00%
  • PHP 4.0 : 834 — 0.03%
  • PHP 4.1 : 1,823 — 0.07%
  • PHP 4.2 : 1,967 — 0.08%
  • PHP 4.3 : 22,537 — 0.87%
  • PHP 4.4 : 79,702 — 3.09%
  • PHP 5.0 : 2,500 — 0.10%
  • PHP 5.1 : 39,144 — 1.52%
  • PHP 5.2 : 586,490 — 22.75%
  • PHP 5.3 : 1,141,116 — 44.26%
  • PHP 5.4 : 583,423 — 22.63%
  • PHP 5.5 : 113,582 — 4.41%
  • PHP 5.6 : 4,464 — 0.17%
  • PHP 6.0 : 34 — 0.00%

Et sous forme d’un graphique :

Il est intéressant de noter que PHP 5.3, qui n’est plus maintenu depuis quelques mois, est toujours la version de PHP la plus utilisée avec 44.3%, loin devant PHP 5.2 et 5.4 qui sont quasiment à égalité, respectivement à 22.8% et 22.6%.

PHP 5.5, publiée en juin 2013, n’arrive qu’en quatrième place, loin derrière les trois autres versions. Et PHP 5.6, qui est la version stable publiée fin août 2014 fait une entrée timide dans ce classement, avec un petit 0.2% des installations identifiées.

Avec plus de deux-tiers des serveurs qui tournent sur des versions de PHP qui ne sont plus officiellement maintenues2, j’en reviens à ce que j’écris à chaque fois que je regarde ces chiffres : les versions récentes de PHP ne sont que beaucoup trop lentement adoptées et trop de serveurs ne sont pas suffisamment mis à jour !


Versions releases de PHP

Enfin, si on descend au niveau des versions release de PHP 5.x, en ne conservant pour l’affichage de cette liste que les versions qui sont le plus souvent utilisées3, on obtient les données suivantes :

  • Pour PHP 5.0 : la version la plus représentées est 5.0.4, avec 0.06% des installations.
  • Pour PHP 5.1 : PHP 5.1.6 remporte la première place, avec 1.40%.
  • Pour PHP 5.2 : voici les versions à plus de 0.5% :
    • 5.2.4 : 16,109 — 0.65%
    • 5.2.5 : 12,966 — 0.52%
    • 5.2.6 : 58,772 — 2.38%
    • 5.2.9 : 24,504 — 0.99%
    • 5.2.10 : 19,529 — 0.79%
    • 5.2.13 : 16,225 — 0.66%
    • 5.2.14 : 15,734 — 0.64%
    • 5.2.17 : 376,304 — 15.23%
  • Pour PHP 5.3 : ici aussi, voici les versions à plus de 0.5% :
    • 5.3.2 : 36,505 — 1.48%
    • 5.3.3 : 249,448 — 10.10%
    • 5.3.6 : 16,333 — 0.66%
    • 5.3.8 : 30,140 — 1.22%
    • 5.3.10 : 108,865 — 4.41%
    • 5.3.13 : 33,579 — 1.36%
    • 5.3.15 : 12,839 — 0.52%
    • 5.3.23 : 16,950 — 0.69%
    • 5.3.26 : 28,704 — 1.16%
    • 5.3.27 : 91,395 — 3.70%
    • 5.3.28 : 210,465 — 8.52%
    • 5.3.29 : 195,469 — 7.91%
  • Pour PHP 5.4 : voici les versions à plus de 0.5% (et la dernière version publiée) :
    • 5.4.4 : 82,126 — 3.32%
    • 5.4.23 : 13,759 — 0.56%
    • 5.4.24 : 13,475 — 0.55%
    • 5.4.25 : 13,650 — 0.55%
    • 5.4.26 : 17,978 — 0.73%
    • 5.4.27 : 24,689 — 1.00%
    • 5.4.28 : 20,568 — 0.83%
    • 5.4.29 : 27,846 — 1.13%
    • 5.4.30 : 43,200 — 1.75%
    • 5.4.31 : 66,772 — 2.70%
    • 5.4.32 : 104,195 — 4.22%
    • 5.4.33 : 77,474 — 3.14%
    • 5.4.34 : 2,023 — 0.08%
  • Pour PHP 5.5 :
    • 5.5.0 : 953 — 0.04%
    • 5.5.1 : 691 — 0.03%
    • 5.5.2 : 309 — 0.01%
    • 5.5.3 : 7,059 — 0.29%
    • 5.5.4 : 1,005 — 0.04%
    • 5.5.5 : 913 — 0.04%
    • 5.5.6 : 1,561 — 0.06%
    • 5.5.7 : 1,710 — 0.07%
    • 5.5.8 : 1,374 — 0.06%
    • 5.5.9 : 31,366 — 1.27%
    • 5.5.10 : 2,287 — 0.09%
    • 5.5.11 : 2,969 — 0.12%
    • 5.5.12 : 3,031 — 0.12%
    • 5.5.13 : 3,059 — 0.12%
    • 5.5.14 : 5,117 — 0.21%
    • 5.5.15 : 5,343 — 0.22%
    • 5.5.16 : 23,864 — 0.97%
    • 5.5.17 : 19,893 — 0.81%
    • 5.5.18 : 1,054 — 0.04%
  • Et pour PHP 5.6 :
    • 5.6.0 : 2,743 — 0.11%
    • 5.6.1 : 1,026 — 0.04%
    • 5.6.2 : 692 — 0.03%

Sous forme d’un graphique reprenant toutes les versions 5.x à plus de 0.5% d’utilisation ou dont le numéro est supérieur ou égal à 5.4.04, on obtient :

En consultant ce graphique et les chiffres correspondant, on identifie plusieurs tendances et plusieurs versions qui semblent plus utilisées que d’autres :

  • PHP 5.1.6 (qui a été publiée en août 2006) est toujours représentée, probablement parce que c’était la version disponible sur certaines distributions entreprise ou dérivées (Redhat Entreprise, ou CentOS 5).
  • Pour PHP 5.2 :
    • PHP 5.2.17 (publiée en janvier 2011) est encore la version release de PHP la plus utilisée, toutes versions mineures confondues, avec 15.23%.
    • PHP 5.2.6 (publiée en mai 2008) arrive en seconde position parmi les versions 5.2.x. Il s’agissait de la version proposée par défaut sous Debian Lenny et elle représente encore 2.38%.
  • Pour PHP 5.3 :
    • PHP 5.3.3 est la version la plus utilisée de la branche 5.3, avec 10.10%. Il s’agit de la version fournie sous Debian Squeeze ou CentOS 6.
    • PHP 5.3.10 est descendue de 7.2% à 4.41% en presque un an : il s’agissait de la version distribuée par Ubuntu Precise (12.04LTS).
    • Viennent ensuite les trois versions les plus récentes de PHP 5.3, à 3.70% pour PHP 5.3.27, 8.52% pour PHP 5.3.28 et 7.91% pour PHP 5.3.29 — les montées vers ces versions doivent correspondre à des hébergeurs qui ont tendance à utiliser la version release la plus à jour disponible, sans pour autant souhaiter effectuer une montée de version mineure (vers une version maintenue, s’entend).
  • Pour PHP 5.4 :
    • PHP 5.4.4 est numéro deux des versions 5.4, avec 3.32%. C’est la version fournie par Debian Wheezy.
    • Les quatre dernières versions de 5.4 sont quant à elles à 2.70% pour PHP 5.4.31, 4.22% pour PHP 5.4.32 et 3.14% pour PHP 5.4.33 — PHP 5.4.34, qui est sortie il y a quelques jours, n’étant pour l’instant qu’à un timide 0.08%.
  • Pour PHP 5.5 :
    • Pour ce qui est de PHP 5.5, la version 5.5.3 est à 0.29%. C’est la version fournie par défaut pour Ubuntu Saucy (13.10).
    • La première place, pour la branche 5.5, revient à PHP 5.5.9 avec ses 1.27% : c’est la version distribuée par Ubuntu Trusty (14.04LTS)
    • Les versions les plus récentes sont quant à elles à 0.97% pour PHP 5.5.16, 0.81% pour PHP 5.5.17 et 0.04% pour PHP 5.5.18.
  • PHP 5.6 fait une timide apparition, avec 0.11% de PHP 5.6.0, 0.04% de PHP 5.6.1 et 0.03% de PHP 5.6.2.

Il est agréable de constater que, sur chaque version mineure, les releases les plus récentes sont, globalement, les plus utilisées — même si de nombreuses installations restent sur les versions fournies par les distributions (qui, pour certaines, intègrent des correctifs de sécurité de versions supérieures, sans pour autant changer de numéro de version).


Évolution

Fidèle à mon habitude, je ne ferai pas une longue analyse sur le pourquoi du comment des chiffres que j’ai présentés ici : libre à vous de commenter sur le trop grand usage de versions complètement obsolètes, et le manque de mise à jour que l’on peut, malheureusement, trop souvent constater…

Cela dit, puisque ce n’est pas la première fois que j’effectue ce processus de collecte de statistiques à propos des versions de PHP utilisées, je me suis dit qu’il pouvait être intéressant de tracer un graphe représentant l’évolution de ces utilisations.

Le graphe reproduit ci-dessous présente donc l’évolution de l’utilisation des versions mineures de PHP, depuis septembre 20115 :

PHP 5.5 et PHP 5.6, les versions actuellement stables de PHP, sont à peine visible… À nous de faire en sorte que cela change !


Méthode et volumes de données

Pour terminer, voici quelques brèves notes à propos de la façon dont j’ai obtenu les chiffres présentés ici :

  • Je suis parti d’une liste de plus de 12 millions de noms de domaines (obtenue depuis le top 1M Alexa, des dumps wikipedia, …).
  • Sur ces 12M domaines, 10.4M ont pu être résolus vers une adresse IP — les 1.6M restant étant probablement trop vieux et plus valides.
  • Sur les 10.4 millions de requêtes HTTP effectuées, environ 25% des réponses ont été identifiées comme générées par du PHP. Plus précisément, j’ai identifié 2,578,278 réponses comme correspondant à du PHP.

Avec ce nombre relativement conséquent de réponses, les statistiques présentées plus haut devraient avoir des chances d’être à peu près correctes, ou, tout au moins, de donner des résultats et chiffres relativement proches de la réalité…

Les informations de logiciels et de versions de PHP ont été obtenues en analysant les en-têtes X-Powered-By et Server des réponses HTTP obtenues en effectuant une requête HEAD, pour chacun des 10.4M de domaines, sur domaine.tld, en me rabattant sur www.domaine.tld si la première requête échouait.

Pour ceux qui voudraient plus de détails, je vous invite à lire deux commentaires romans que j’avais postés suite à l’article de janvier 2013, en réponses à quelques questions qui m’avaient été posées : le premier, et le second.


Et vous, utilisez-vous une version à jour de PHP ?



  1. PHP 5 étant loin devant toutes les autres versions majeures, je ne présenterai pas de graphique : il n’aurait pas un grand intérêt ! 

  2. Certaines distributions (principalement celles orientées entreprise) backportent des correctifs de sécurités vers les vieilles versions de PHP. Certains installations en PHP 5.2 ou 5.3 ne souffrent donc peut-être pas des failles de sécurité corrigées après l’arrêt de la maintenance officielle de ces versions. 

  3. À raison d’environ une release par mois sur deux branches maintenues en parallèle, la liste complète des versions releases se fait un peu longue — je ne la reproduit donc pas intégralement ici. 

  4. Avec autant de versions release de PHP, j’ai choisi de n’afficher sur ce graphique, pour qu’il reste lisible, que les versions à plus de 0.5% pour les plus anciennes et toutes les versions depuis PHP 5.4.0 (pour présenter l’ensemble des versions release de versions mineures aujourd’hui maintenues). 

  5. Les chiffres présentés sur le graphique d’évolution sont en pourcentages, afin d’être indépendants du nombre d’hôtes interrogés, qui varie à chaque série de collectes. Notez que les collectes n’ont pas été effectuées de manière très régulière dans le temps ; il n’y a donc pas le même écart entre chaque date ! 

Vous avez apprécié cet article ? Faites-le savoir !

Ce blog a récemment été migré vers un générateur de sites statiques et je n'ai pas encore eu le temps de remettre un mécanisme de commentaires en place.

Avec un peu de chance, je parviendrai à m'en occuper d'ici quelques semaines ;-)