Statistiques de versions de PHP - avril 2012

2 mai 2012php, stats
 Cet article a été rédigé il y a plusieurs années et peut ne plus être tout à fait à jour…

En septembre 2011, et en janvier cette année, j’ai eu l’occasion de publier deux articles présentant quelques statistiques d’utilisation des différentes versions de PHP.

Depuis, le dernier article de cette série, environ trois mois se sont écoulés, PHP 5.4 est sorti en sa première version stable (le 1er mars), et la version 5.4.1 est actuellement en RC1. Le moment semble donc venu de publier une mise à jour de ces statistiques.

Les données présentées dans cet article ont été collectées le week-end du 21 avril 2012.

Sommaire :


Quelques mots sur la méthode

Pour faire simple, j’ai récupéré une liste de plus de 8.3 millions de noms de domaines, issus principalement :

  • Du top 1 million d’Alexa (chargé plusieurs fois à quelques semaines/mois d’écart, ce qui donne plus de 1 million de noms de domaines),
  • Des liens externes de wikipedia de plusieurs langues (environ 3 millions de noms de domaines),
  • De l’export mis à disposition par l’Export Open Directory (environ 2 millions de noms de domaines),
  • Et de quelques résultats de recherche google (quelques milliers de noms de domaines).

Ensuite, pour chacun de ces noms de domaines, j’ai effectué une requête HTTP HEAD sur domaine.tld, en me rabattant sur www.domaine.tld si la première requête échouait.

Après cela, je me suis généralement2 basé sur l’en-tête HTTP X-Powered-By renvoyée par le serveur, pour en extraire le nom du logiciel ayant servir à générer la page, ainsi que sa version.
Et dans le cas où cette en-tête n’existe pas, ou ne contient pas d’information exploitable, je me suis rabattu sur l’en-tête Server.

Pour rappel, et en ne prenant que quelques exemples relativement typiques, les en-têtes HTTP renvoyées par le serveur, dans le cas de pages générées par PHP et sur un serveur exposant la version de PHP utilisée, ressemblent souvent à quelque chose de ce type (pour www.php.net) :

Server: Apache/1.3.41 (Unix) PHP/5.2.17
X-Powered-By: PHP/5.2.17

ou (pour www.afup.org) :

Server: Apache
X-Powered-By: PHP/5.2.14-0.dotdeb.0

A partir de là, extraire le numéro de la version de PHP utilisée est une opération relativement aisée…


Quelques chiffres

Réponses PHP

Sur les 7.9 millions de requêtes HTTP effectuées sur les noms de domaines que j’ai testé, environ 26% des réponses ont été identifiées comme générées par du PHP.
Plus précisément, j’ai identifié 2,063,505 réponses comme correspondant à du PHP.

Avec ce nombre relativement conséquent de réponses, les statistiques présentées plus bas 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é…


Serveurs Web

Cela dit, avant d’entrer dans les détais des versions de PHP, voici la liste des Serveurs Web les plus fréquemment identifiés lors de ma collecte de données :

  • Apache : 4,496,236 – 67.16%
  • IIS : 1,227,240 – 18.33%
  • nginx : 414,578 – 6.19%
  • Autres : 268,720 – 4.01%
  • GSE : 161,937 – 2.42%
  • YTS : 49,382 – 0.74%
  • LiteSpeed : 48,719 – 0.73%
  • Oversee Turing v1.0.0 : 28,359 – 0.42%

Ou, sous forme d’un graphe :

Serveurs Web

On continuera de noter l’importance d’Apache, qui, toutes versions confondues, est toujours en tête, loin devant les autres.
nginx, quant à lui, confirme sa troisième place, en progressant même d’un demi-point en trois mois.


Versions majeures de PHP

Commençons par les versions majeures de PHP, en prenant en compte les résultats qui ont été identifiés comme correspondant à une version supérieure ou égale à 3, et inférieure ou égale à 63.

Mes tests ont remonté le nombre suivant de domaines sur chaque version majeure de PHP :

  • PHP 3 : 784 – 0.04%
  • PHP 4 : 248,241 – 12.03%
  • PHP 5 : 1,814,376 – 87.93%
  • PHP 6 : 31 – 0.00%

Sous forme d’un graphe, qui peut être plus parlant pour certains et permet de voir en un clin d’oeil quelle est la version majeure de PHP la plus répandue, cela donne :

Versions majeures de PHP

On notera :

  • Que, fort heureusement, PHP 5 est la version majeure la plus répandue,
  • Mais que, en 2012, on a encore quelques centaines de sites, sur 7.9 millions, qui tournent encore sur du PHP 3,
  • Mais aussi que PHP 4 (avec ses 12%) est encore beaucoup trop répandue, alors que cela fait des années que cette version n’est plus du tout maintenue (PHP 4.4.9, publiée en Août 2008, était annoncée comme étant la dernière version de PHP 4.x),
  • Et enfin que, plus d’un an après la mise à mort de la branche PHP 6 (qui, pour rappel, n’a jamais vu une version ne serait-ce qu’alpha être publiée), on rencontre (encore) des sites qui utilisent PHP 6 en production4 ???


Versions mineures de PHP

Si on passe aux versions mineures de PHP, toujours pour PHP >= 3.x et PHP <= 6.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 : 782 – 0.04%
  • PHP 4.0 : 1,808 – 0.09%
  • PHP 4.1 : 4,292 – 0.21%
  • PHP 4.2 : 3,842 – 0.19%
  • PHP 4.3 : 55,257 – 2.68%
  • PHP 4.4 : 183,039 – 8.87%
  • PHP 5.0 : 7,286 – 0.35%
  • PHP 5.1 : 84,938 – 4.12%
  • PHP 5.2 : 1,189,049 – 57.63%
  • PHP 5.3 : 530,983 – 25.73%
  • PHP 5.4 : 2,111 – 0.10%
  • PHP 6.0 : 29 – 0.00%

Et sous forme graphique :

Versions mineures de PHP

Pour résumer :

  • PHP 5.2, qui a atteint sa fin de vie en décembre 2010, il y a déjà plus d’un an, est toujours la version de PHP qui semble aujourd’hui la plus utilisée / répandue,
  • PHP 5.3, stable depuis juin 2009, soit bientôt trois ans, n’arrive qu’en seconde place – et loin derrière PHP 5.2,
    • Mais notons tout de même que PHP 5.3 a gagné plus de 7 points depuis janvier, ce qui lui permet, pour la première fois, d’atteindre les 25% !
  • PHP 5.4, sortie en sa première version stable il y a moins de deux mois, atteint timidement les 0.10%.

Considérant que PHP 5.2 est encore la version de PHP utilisée sur plus de la moitié des serveurs pour lesquels j’ai obtenu des données, et que PHP 5.3, au bout de presque 3 ans, atteint tout juste les 25%, je suis curieux de voir quelle sera l’évolution de PHP 5.4 sur les prochains mois !


Versions releases de PHP

Et enfin, si on descend au niveau des versions release de PHP 5.x5, en ne conservant que les versions qui remontées 100 fois ou plus, on obtient les données suivantes :

  • Pour PHP 5.0 :
    • 5.0.1 : 118 – 0.01%
    • 5.0.2 : 270 – 0.01%
    • 5.0.3 : 691 – 0.04%
    • 5.0.4 : 5,203 – 0.29%
    • 5.0.5 : 950 – 0.05%
  • Pour PHP 5.1 :
    • 5.1.1 : 335 – 0.02%
    • 5.1.2 : 6,292 – 0.35%
    • 5.1.3 : 1,539 – 0.08%
    • 5.1.4 : 2,337 – 0.13%
    • 5.1.5 : 255 – 0.01%
    • 5.1.6 : 74,160 – 4.09%
  • Pour PHP 5.2 :
    • 5.2.0 : 23,240 – 1.28%
    • 5.2.1 : 5,765 – 0.32%
    • 5.2.2 : 1,872 – 0.10%
    • 5.2.3 : 8,502 – 0.47%
    • 5.2.4 : 42,825 – 2.36%
    • 5.2.5 : 31,155 – 1.72%
    • 5.2.6 : 162,833 – 8.98%
    • 5.2.7 : 159 – 0.01%
    • 5.2.8 : 23,952 – 1.32%
    • 5.2.9 : 78,047 – 4.30%
    • 5.2.10 : 42,968 – 2.37%
    • 5.2.11 : 29,425 – 1.62%
    • 5.2.12 : 37,048 – 2.04%
    • 5.2.13 : 57,964 – 3.20%
    • 5.2.14 : 57,252 – 3.16%
    • 5.2.15 : 4,674 – 0.26%
    • 5.2.16 : 24,621 – 1.36%
    • 5.2.17 : 556,636 – 30.68%
  • Pour PHP 5.3 :
    • 5.3.0 : 3,022 – 0.17%
    • 5.3.1 : 4,288 – 0.24%
    • 5.3.2 : 54,067 – 2.98%
    • 5.3.3 : 116,147 – 6.40%
    • 5.3.4 : 5,552 – 0.31%
    • 5.3.5 : 49,736 – 2.74%
    • 5.3.6 : 44,931 – 2.48%
    • 5.3.7 : 871 – 0.05%
    • 5.3.8 : 74,447 – 4.10%
    • 5.3.9 : 14,311 – 0.79%
    • 5.3.10 : 163,515 – 9.01%
  • Pour PHP 5.4 :
    • 5.4.0 : 1,991 – 0.11%
    • 5.4.1 : 119 – 0.01%

Et sous forme graphique :

Versions releases de PHP

Pour résumer :

  • Une quantité non-négligeable de sites sous PHP 5.1.6 (qui a été publiée en Août 2006) ; la version fournie par défaut sous certaines distributions, il me semble, genre Redhat Enterprise.
  • Beaucoup de PHP 5.2.6 (publiée en Mai 2008) ; la version fournie par défaut sous Debian Lenny, par exemple.
  • La version de PHP la plus répandue est PHP 5.2.17 (publiée en Janvier 2011) ; ça reste du 5.2, qui a atteint sa fin de vie, mais positivons, en se disant que c’est la dernière version, la plus à jour…
  • Et enfin, plusieurs sous-versions de PHP 5.3.x, dont en particulier :
    • PHP 5.3.3 – version par défaut sous Debian Squeeze, notamment,
    • Et PHP 5.3.10 – dernière version stable de PHP 5.3.x ; étant la plus répandue des versions release de PHP 5.3.x.
  • Par pure curiosité, notons que PHP 5.4.1 est la version utilisée sur une centaine de serveurs, parmis les quelques millions de serveurs interrogés, alors qu’au moment où ces données ont été collectées, cette version n’avait été publiée qu’en RC (PHP 5.4.1 est sortie en version stable avant la publication de cet article, mais après la collecte des données qu’il présente).


Evolution

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

Evolution de l'utilisation des versions (mineures) de PHP

J’ai essayé de mettre en évidence les versions les plus à même de nous concerner en ce moment (à savoir, PHP 5.2, 5.3, et 5.4), ainsi que, dans une moindre mesure les deux autres versions les plus utilisées (autrement dit, PHP 4.4 et 5.1).

Le point clairement mis en évidence ici est que PHP 5.2 laisse petit à petit sa place à PHP 5.3 – ce qui est une très bonne chose, même s’il serait appréciable que la migration se fasse un peu plus rapidement, considérant les « nouveautés » qu’apporte PHP 5.3, le fait que PHP 5.2 ait atteint sa fin de vie, ou même la sortie récente de PHP 5.4.



  1. PHP 5.4.1 a été publiée le 26 avril 2012, soit avant cet article, mais quelques jours après la collecte des données présentées ici.

    [return]
  2. Pour certains types de serveurs ou de logiciels, j’ai mis en place un bout de code qui va chercher les informations de version dans d’autres en-têtes que X-Powered-By. Par exemple, pour les sites développés en ASP.NET, les informations de version figurent généralement dans une en-tête nommée X-AspNet-Version.

    [return]
  3. Pour ne pas prendre en compte les quelques résultats abherrant qu’on aurait pu relever – du genre overworld.su qui renvoi X-Powered-By: PHP/10.0.0 ???

    [return]
  4. Même si on ne rencontre que très peu de serveurs sous PHP 6, cette version de PHP, qui n’a jamais été publiée et dont le développement a même été abandonné, est tout de même déployée sur suffisament de machines pour attirer l’attention : cela signifie que, un jour, quelqu’un a installé sur un serveur « public » une version de développement de PHP, et n’a ensuite pas pris la peine de le mettre à jour…

    [return]
  5. PHP 4 correspondant à des versions tellement dépassées que je préfére ne pas prendre la peine de rentrer au niveau des versions release.

    [return]
  6. 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.

    [return]