{"id":270,"date":"2026-10-30T12:31:12","date_gmt":"2026-10-30T11:31:12","guid":{"rendered":"https:\/\/www.olivierdoucet.info\/blog\/?p=270"},"modified":"2026-10-30T12:31:12","modified_gmt":"2026-10-30T11:31:12","slug":"remplacer-php","status":"publish","type":"post","link":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/","title":{"rendered":"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>En octobre 2026, deux failles du moteur PHP entra\u00eenent des mises hors ligne dans plusieurs pays. L&rsquo;occasion de revenir sur les tentatives de remplacement de PHP, de HHVM \u00e0 Rust, et sur ce qui les rend si difficiles : la compatibilit\u00e9 avec les applications existantes.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>27 octobre 2026. Chiffres et \u00e9tat des projets arr\u00eat\u00e9s \u00e0 cette date.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Octobre 2026 : deux CVE et des correctifs pr\u00e9cipit\u00e9s<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le 20 octobre 2026, les identifiants de deux vuln\u00e9rabilit\u00e9s PHP circulent sur des forums avant leur divulgation officielle. Un score de 10\/10 se propage, \u00e0 tort : les deux failles sont not\u00e9es 9,2 en CVSS v4.0. Toutes deux concernent la gestion m\u00e9moire et peuvent permettre une ex\u00e9cution de code \u00e0 distance sans authentification, sous certaines conditions. PHP avance sa pr\u00e9-annonce \u00e0 19 h 30 UTC et d\u00e9cide de publier les correctifs le 21 octobre au lieu du 22. Vers 20 h, Calif, soci\u00e9t\u00e9 impliqu\u00e9e dans la d\u00e9couverte, met accidentellement en ligne une vid\u00e9o de d\u00e9monstration. Elle est retir\u00e9e rapidement, mais d\u00e9j\u00e0 diffus\u00e9e ailleurs.&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\"><strong>1<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le 21 octobre, \u00e0 7 h 41 UTC, Chainguard distribue des images contenant le correctif, plus de six heures avant l&rsquo;heure convenue. La PHP Foundation d\u00e9nonce une rupture d&#8217;embargo. Les versions PHP 8.2.35, 8.3.36, 8.4.27 et 8.5.12 sont publi\u00e9es \u00e0 14 h UTC. Le CERT-FR recommande d&rsquo;isoler les syst\u00e8mes expos\u00e9s en attendant leur mise \u00e0 jour. Plusieurs sites administratifs fran\u00e7ais affichent des pages de maintenance pr\u00e9ventive.&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\"><strong>1<\/strong><\/a>,&nbsp;<a href=\"https:\/\/cert.cyber.gouv.fr\/alerte\/CERTFR-2026-ALE-014\/\"><strong>2<\/strong><\/a>,&nbsp;<a href=\"https:\/\/www.leparisien.fr\/high-tech\/prefectures-impots-pourquoi-de-nombreux-sites-sont-momentanement-inaccessibles-ce-jeudi-21-10-2026-HHKUKEM4KZAFNOTMMNBKEQMFKE.php\"><strong>3<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les interruptions d\u00e9passent les fronti\u00e8res fran\u00e7aises. Reuters cite l&rsquo;ITZBund allemand, le minist\u00e8re belge des Affaires \u00e9trang\u00e8res, le Port de Rotterdam et des h\u00f4pitaux n\u00e9erlandais. Wikimedia, Internet Archive, la BBC, plusieurs services publics ou entreprises au Japon, ainsi qu&rsquo;Orange en France, prennent \u00e9galement des mesures. Ces interruptions, parfois pr\u00e9ventives, ne d\u00e9montrent pas que les organisations concern\u00e9es ont \u00e9t\u00e9 compromises.&nbsp;<a href=\"https:\/\/www.internazionale.it\/ultime-notizie-reuters\/2026\/10\/22\/factbox-governments-companies-take-websites-offline-over-php-flaws\"><strong>4<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les alertes continuent apr\u00e8s les correctifs. Entre le 21 et le 26 octobre, watchTowr observe des tentatives d&rsquo;exploitation ; le CERT-FR en confirme sur des d\u00e9ploiements pr\u00e9cis. Une troisi\u00e8me vuln\u00e9rabilit\u00e9, CVE-2026-115560, li\u00e9e \u00e0&nbsp;<code>session.upload_progress<\/code>, est annonc\u00e9e le 23 octobre. Trois jours plus tard, la CISA ajoute CVE-2026-109618 \u00e0 son catalogue KEV des vuln\u00e9rabilit\u00e9s exploit\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Chronologie : PHP Foundation, CERT-FR, watchTowr. Les tentatives observ\u00e9es ne signifient pas que tous les d\u00e9ploiements PHP sont exploitables.<\/em>&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\"><strong>1<\/strong><\/a>,&nbsp;<a href=\"https:\/\/cert.cyber.gouv.fr\/alerte\/CERTFR-2026-ALE-014\/\"><strong>2<\/strong><\/a>,&nbsp;<a href=\"https:\/\/watchtowr.com\/intelligence\/php-cve-2026-109618-faq\/\"><strong>5<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sous le nom \u00ab PHP2Shell \u00bb, on trouve deux d\u00e9fauts distincts dans Zend, le moteur de PHP :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CVE-2026-109618<\/strong>\u00a0: lorsqu&rsquo;une allocation atteint\u00a0<code>memory_limit<\/code>, un\u00a0<code>longjmp()<\/code>\u00a0interrompt brutalement une initialisation. Le nettoyage peut ensuite retrouver des structures partiellement initialis\u00e9es et corrompre la m\u00e9moire. Sur Apache avec mod_php, une exploitation compl\u00e8te a \u00e9t\u00e9 d\u00e9montr\u00e9e avant m\u00eame l&rsquo;ex\u00e9cution du code applicatif.\u00a0<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-w8hw-w9fx-j79w\"><strong>6<\/strong><\/a><\/li>\n\n\n\n<li><strong>CVE-2026-109619<\/strong>\u00a0: une erreur fatale, un d\u00e9passement de temps ou un diagnostic tardif peut emp\u00eacher la remise \u00e0 z\u00e9ro d&rsquo;un \u00e9tat global conserv\u00e9 par un worker. Une requ\u00eate ult\u00e9rieure, sur ce m\u00eame worker, r\u00e9utilise alors un pointeur vers de la m\u00e9moire lib\u00e9r\u00e9e : c&rsquo;est un\u00a0<em>use-after-free<\/em>. Un chemin d&rsquo;exploitation impliquant le cycle de vie de\u00a0<code>session.upload_progress<\/code>\u00a0a notamment \u00e9t\u00e9 valid\u00e9 sur FPM.\u00a0<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-6wmf-4rv5-p3rp\"><strong>7<\/strong><\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-115560 suppose une configuration plus particuli\u00e8re : le s\u00e9rialiseur de sessions doit \u00eatre r\u00e9gl\u00e9 sur&nbsp;<code>php_binary<\/code>&nbsp;ou&nbsp;<code>php_serialize<\/code>, puis remplac\u00e9 par&nbsp;<code>php<\/code>&nbsp;dans le code avant&nbsp;<code>session_start()<\/code>, avec le suivi des t\u00e9l\u00e9versements actif. Ce suivi est activ\u00e9 par d\u00e9faut, mais cette seule condition ne suffit pas pour exploiter la faille. PHP recommande temporairement&nbsp;<code>session.upload_progress.enabled=0<\/code>&nbsp;pour \u00e9carter ce vecteur, en attendant le correctif pr\u00e9vu dans le cycle normal.&nbsp;<a href=\"https:\/\/www.php.net\/archive\/2026.php#2026-10-23-1\"><strong>8<\/strong><\/a>,&nbsp;<a href=\"https:\/\/www.php.net\/manual\/en\/session.configuration.php\"><strong>9<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Face \u00e0 ces bugs m\u00e9moire, la r\u00e9\u00e9criture de PHP en Rust m\u00e9rite qu&rsquo;on s&rsquo;y int\u00e9resse. Rust emp\u00eache par conception une grande partie des erreurs d&rsquo;acc\u00e8s m\u00e9moire permises en C. La difficult\u00e9 est de conserver tous les comportements que les applications attendent de PHP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rust : supprimer des bugs m\u00e9moire sans inventer un autre PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En juin 2026, Francesco Tinti cr\u00e9e&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\">php-rust<\/a>. Il reconstruit le parseur, la compilation en bytecode, la machine virtuelle, le ramasse-miettes et les fonctions internes. L&rsquo;objectif est de reproduire le comportement observable de PHP, sans reprendre l&rsquo;architecture de Zend.&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\"><strong>10<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le Rust s\u00fbr \u00e9vite les acc\u00e8s hors limites, les doubles lib\u00e9rations et les&nbsp;<em>use-after-free<\/em>. La garantie s&rsquo;arr\u00eate toutefois aux fronti\u00e8res&nbsp;<code>unsafe<\/code>&nbsp;et FFI, notamment lorsque le programme appelle des biblioth\u00e8ques C. php-rust s&rsquo;appuie d\u00e9j\u00e0 sur des biblioth\u00e8ques natives pour certaines fonctions multim\u00e9dias et de compression. Il lui faut donc assurer \u00e0 la fois la s\u00fbret\u00e9 de sa propre m\u00e9moire et la compatibilit\u00e9 des applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au 27 octobre, le d\u00e9p\u00f4t compte 283 \u00e9toiles et 11 forks. php-rust reste un petit projet face \u00e0 Zend, m\u00eame si les r\u00e9sultats annonc\u00e9s pour quelques mois de d\u00e9veloppement sont substantiels. Ils proviennent des tests de l&rsquo;auteur : ils ne constituent ni une validation ind\u00e9pendante ni une garantie d&rsquo;aptitude \u00e0 la production.&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\"><strong>10<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/blob\/main\/php-rust\/COVERAGE.md\"><strong>11<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La couverture varie fortement selon ce qu&rsquo;on mesure. 1 017 des 2 143 fonctions internes sont disponibles (47 %), car plusieurs extensions enti\u00e8res n&rsquo;ont pas encore \u00e9t\u00e9 port\u00e9es. Pour le c\u0153ur du langage, les fonctions standard et les dates, la couverture grimpe \u00e0 539 sur 654 (82 %).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00f4t\u00e9 validation, 2 655 tests Zend passent sur 4 067 ex\u00e9cutables (65,3 %). Le corpus contient au total 5 305 tests, dont 1 238 sont ignor\u00e9s, notamment faute d&rsquo;extensions. Quant \u00e0 WordPress, l&rsquo;auteur revendique une quasi-parit\u00e9 avec la suite de tests du c\u0153ur, sur les versions et sc\u00e9narios effectivement \u00e9valu\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Mesures du 16 septembre 2026, \u00e9tablies et publi\u00e9es par le projet contre PHP 8.5.7.<\/em>&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/blob\/main\/php-rust\/COVERAGE.md\"><strong>11<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sur les performances, php-rust accuse encore du retard. Le langage d&rsquo;impl\u00e9mentation ne suffit pas \u00e0 battre Zend, dont les valeurs, le&nbsp;<em>copy-on-write<\/em>, OPcache et le JIT ont b\u00e9n\u00e9fici\u00e9 d&rsquo;ann\u00e9es d&rsquo;optimisation. Un interpr\u00e9teur neuf doit retrouver des optimisations comparables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans les micro-benchmarks publi\u00e9s, php-rust consomme 2,1 fois plus de temps CPU en arithm\u00e9tique, 2,3 fois plus pour les propri\u00e9t\u00e9s d&rsquo;objet et 2,9 fois plus pour les tableaux. Le ratio atteint \u00d73,5 sur les appels de fonctions et \u00d74,3 sur les cha\u00eenes de caract\u00e8res.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sur les suites applicatives, l&rsquo;auteur mesure environ \u00d71,75 pour WordPress et \u00d77 pour Doctrine ORM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Mesures internes d&rsquo;octobre 2026, pas benchmarks ind\u00e9pendants. \u00ab \u00d72 \u00bb signifie deux fois plus de temps CPU, et non deux fois moins de requ\u00eates HTTP par seconde.&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/blob\/main\/php-rust\/NEXT_SESSION_WORDPRESS.md\"><strong>12<\/strong><\/a><\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il reste la question des extensions natives. Une extension&nbsp;<code>redis.so<\/code>,&nbsp;<code>imagick.so<\/code>, Xdebug ou un agent de supervision compil\u00e9 pour l&rsquo;ABI Zend ne peut pas \u00eatre charg\u00e9 tel quel par une autre machine virtuelle. Le nouveau moteur doit recr\u00e9er son comportement ou fournir une interface native compatible, au risque de r\u00e9introduire une partie des probl\u00e8mes de m\u00e9moire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La compatibilit\u00e9 du langage r\u00e9serve aussi des pi\u00e8ges. Le 25 octobre, un contributeur signale que&nbsp;<code>filter_var('not-an-email', FILTER_VALIDATE_EMAIL)<\/code>&nbsp;renvoie sous php-rust la cha\u00eene d&rsquo;origine au lieu de&nbsp;<code>false<\/code>.&nbsp;<code>FILTER_VALIDATE_DOMAIN<\/code>&nbsp;est \u00e9galement concern\u00e9. Une PR de correction est alors ouverte. Cette divergence ne provoque pas de corruption m\u00e9moire ; elle peut en revanche laisser passer une donn\u00e9e que l&rsquo;application croit avoir valid\u00e9e.&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/issues\/6\"><strong>13<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/pull\/7\"><strong>14<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D&rsquo;autres interpr\u00e9teurs Rust, comme le&nbsp;<a href=\"https:\/\/github.com\/wudi\/php-rs\">php-rs exp\u00e9rimental de wudi<\/a>, explorent la m\u00eame voie sans pr\u00e9tendre constituer aujourd&rsquo;hui une alternative g\u00e9n\u00e9rale \u00e0 Zend.&nbsp;<a href=\"https:\/\/github.com\/wudi\/php-rs\"><strong>15<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le d\u00e9p\u00f4t documente aussi une m\u00e9thode de d\u00e9veloppement fortement assist\u00e9e par IA : plans de sessions num\u00e9rot\u00e9es, consignes destin\u00e9es aux agents, revues contradictoires et commits mentionnant Claude. Les protocoles de test et de mesure sont d\u00e9taill\u00e9s. Ce mode de d\u00e9veloppement ne suffit ni \u00e0 invalider les r\u00e9sultats ni \u00e0 garantir leur fiabilit\u00e9. Reste une question de maintenance : qui adaptera ce moteur aux \u00e9volutions futures de PHP ?&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\"><strong>10<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/blob\/main\/php-rust\/NEXT_SESSION_WORDPRESS.md\"><strong>12<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">HHVM : quand Facebook a choisi Hack<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Au d\u00e9but des ann\u00e9es 2010, Facebook cherche \u00e0 r\u00e9duire le co\u00fbt d&rsquo;ex\u00e9cution de PHP. Apr\u00e8s HipHop, un traducteur de PHP vers C++, l&rsquo;entreprise d\u00e9veloppe HHVM, une machine virtuelle dot\u00e9e d&rsquo;un compilateur JIT. Face \u00e0 PHP 5, elle obtient des gains de performances consid\u00e9rables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fin 2015, PHP 7 change le rapport de force en acc\u00e9l\u00e9rant fortement Zend. En mai 2017, Fabien Potencier annonce la fin du support HHVM dans Symfony 4 : les diff\u00e9rences de comportement demandent trop d&rsquo;efforts, l&rsquo;avantage de vitesse s&rsquo;est r\u00e9duit et moins de 4 % des r\u00e9pondants \u00e0 sa consultation souhaitent conserver le support.&nbsp;<a href=\"https:\/\/www.php.net\/releases\/7_0_0.php\"><strong>16<\/strong><\/a>,&nbsp;<a href=\"https:\/\/symfony.com\/blog\/symfony-4-end-of-hhvm-support\"><strong>17<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En 2014, Facebook pr\u00e9sente Hack, un langage d\u00e9riv\u00e9 de PHP avec un syst\u00e8me de types plus ambitieux. En septembre 2018, l&rsquo;\u00e9quipe HHVM annonce qu&rsquo;elle abandonne la compatibilit\u00e9 PHP. La version 4.0, sortie en f\u00e9vrier 2019, confirme ce choix : l&rsquo;\u00e9quipe peut faire \u00e9voluer Hack sans devoir reproduire chaque changement de PHP.&nbsp;<a href=\"https:\/\/hhvm.com\/blog\/2018\/09\/12\/end-of-php-support-future-of-hack.html\"><strong>18<\/strong><\/a>,&nbsp;<a href=\"https:\/\/hhvm.com\/blog\/2019\/02\/11\/hhvm-4.0.0.html\"><strong>19<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HHVM continue de servir chez Meta. En mai 2025, l&rsquo;entreprise publiait encore des optimisations destin\u00e9es aux traitements longs li\u00e9s \u00e0 l&rsquo;IA g\u00e9n\u00e9rative. En revanche, les releases open source officielles avaient \u00e9t\u00e9 arr\u00eat\u00e9es en 2023. Meta invoquait le co\u00fbt du maintien d&rsquo;anciennes versions face \u00e0 l&rsquo;automatisation et \u00e0 la cadence de ses releases internes, ainsi que l&rsquo;abandon de GCC au profit de Clang ; elle n&rsquo;expliquait pas cette d\u00e9cision par une absence d&rsquo;utilisateurs externes.&nbsp;<a href=\"https:\/\/engineering.fb.com\/2025\/05\/20\/web\/metas-full-stack-hhvm-optimizations-for-genai\/\"><strong>20<\/strong><\/a>,&nbsp;<a href=\"https:\/\/hhvm.com\/blog\/2023\/10\/27\/oss-update.html\"><strong>21<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;histoire de HHVM n&rsquo;est donc pas celle d&rsquo;un simple \u00e9chec :&nbsp;<strong>c&rsquo;est celle d&rsquo;une technologie qui a r\u00e9ussi en cessant de vouloir \u00eatre PHP.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D&rsquo;autres fa\u00e7ons de r\u00e9inventer PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les autres projets montrent qu&rsquo;on peut modifier PHP de plusieurs fa\u00e7ons : compiler le code pour une autre plateforme, r\u00e9\u00e9crire le runtime ou r\u00e9utiliser Zend dans un nouvel environnement.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"453\" src=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php-1024x453.png\" alt=\"Strat\u00e9gies PHP\" class=\"wp-image-272\" srcset=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php-1024x453.png 1024w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php-300x133.png 300w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php-768x340.png 768w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php.png 1440w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Figure 1 \u2014 R\u00e9\u00e9crire le moteur, compiler vers une autre plateforme, ou conserver Zend. WordPress Playground appartient clairement \u00e0 cette derni\u00e8re cat\u00e9gorie.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quelques exemples :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/github.com\/VKCOM\/kphp\">KPHP<\/a><\/strong>\u00a0compile un sous-ensemble de PHP en C++, puis en binaire natif, au prix de restrictions sur certaines fonctionnalit\u00e9s dynamiques.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\">PeachPie<\/a><\/strong>\u00a0compile PHP pour .NET et privil\u00e9gie l&rsquo;interop\u00e9rabilit\u00e9 avec C#, avec une biblioth\u00e8que d&rsquo;ex\u00e9cution \u00e0 adapter.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/github.com\/hippyvm\/hippyvm\">HippyVM<\/a><\/strong>\u00a0et\u00a0<strong><a href=\"https:\/\/github.com\/jphp-group\/jphp\">JPHP<\/a><\/strong>\u00a0explorent d&rsquo;autres machines virtuelles et des usages plus sp\u00e9cifiques.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/developer.wordpress.org\/playground\/developers\/architecture\/wasm-php-compiling\/\">WordPress Playground<\/a><\/strong>\u00a0compile le PHP officiel en WebAssembly : le moteur reste Zend, avec les contraintes du navigateur.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/github.com\/extphprs\/ext-php-rs\">ext-php-rs<\/a><\/strong>\u00a0permet d&rsquo;\u00e9crire des extensions Zend en Rust, sans faire dispara\u00eetre la fronti\u00e8re FFI\/<code>unsafe<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Le compromis appara\u00eet surtout avec KPHP, qui accepte de restreindre le langage pour faciliter la compilation native. WordPress Playground fait l&rsquo;inverse : il conserve Zend et l&rsquo;ex\u00e9cute en WebAssembly.&nbsp;<code>ext-php-rs<\/code>&nbsp;r\u00e9duit la part de C dans les extensions, sans supprimer leur interface native. PeachPie, lui, cherche surtout l&rsquo;interop\u00e9rabilit\u00e9 avec C#.&nbsp;<a href=\"https:\/\/ext-php.rs\/\"><strong>22<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/VKCOM\/kphp\"><strong>23<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\"><strong>24<\/strong><\/a>,&nbsp;<a href=\"https:\/\/developer.wordpress.org\/playground\/developers\/architecture\/wasm-php-compiling\/\"><strong>25<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FrankenPHP : moderniser PHP sans toucher \u00e0 Zend<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FrankenPHP est probablement l&rsquo;approche la plus directement utilisable aujourd&rsquo;hui parmi ces alternatives. Le serveur s&rsquo;appuie sur Caddy, \u00e9crit en Go, mais ex\u00e9cute le PHP officiel via son API native. Les requ\u00eates PHP tournent dans des threads avec Zend Thread Safety (ZTS). Le moteur conserve donc son comportement et ses extensions, sous r\u00e9serve de leur compatibilit\u00e9 ZTS.&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/\"><strong>26<\/strong><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/sapi-isolation.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"548\" src=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/sapi-isolation-1024x548.png\" alt=\"\" class=\"wp-image-273\" srcset=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/sapi-isolation-1024x548.png 1024w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/sapi-isolation-300x160.png 300w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/sapi-isolation-768x411.png 768w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/sapi-isolation.png 1440w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Figure 2 \u2014 L&rsquo;unit\u00e9 de d\u00e9faillance n&rsquo;est pas la m\u00eame. Un enfant FPM traite plusieurs requ\u00eates successives, pas un nouveau processus par requ\u00eate ; FrankenPHP traite plusieurs requ\u00eates dans les threads d&rsquo;un m\u00eame processus.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avec mod_php, Zend vit dans les processus Apache : le serveur web et son interpr\u00e9teur sont \u00e9troitement coupl\u00e9s. Avec Nginx + PHP-FPM, un processus ma\u00eetre supervise des enfants r\u00e9utilis\u00e9s au fil des requ\u00eates ; si l&rsquo;un meurt, les autres continuent. Avec FrankenPHP, plusieurs threads PHP partagent un processus unique. Cela simplifie l&rsquo;int\u00e9gration HTTP, mais change le rayon d&rsquo;impact d&rsquo;un plantage natif.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les analyses de CVE-2026-109618 \u00e9clairent la diff\u00e9rence entre ces architectures :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Apache + mod_php :<\/strong>\u00a0une RCE a \u00e9t\u00e9 d\u00e9montr\u00e9e avant le code applicatif, avec la configuration par d\u00e9faut. Le traitement et le nettoyage de la requ\u00eate restent dans le worker Apache.<\/li>\n\n\n\n<li><strong>PHP-FPM :<\/strong>\u00a0le processus enfant quitte si l&rsquo;initialisation \u00e9choue. L&rsquo;advisory ne documente pas de cha\u00eene compl\u00e8te pour cette CVE sur FPM, ce qui n&rsquo;exclut ni les chemins applicatifs ni CVE-2026-109619.<\/li>\n\n\n\n<li><strong>FrankenPHP :<\/strong>\u00a0l&rsquo;advisory juge ce mod\u00e8le probablement expos\u00e9 \u00e0 la voie ind\u00e9pendante de l&rsquo;application, par analogie avec mod_php. Une d\u00e9faillance fatale du processus peut toucher toutes ses requ\u00eates simultan\u00e9es.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Nuance documentaire : l&rsquo;advisory ne d\u00e9crit aucune d\u00e9monstration compl\u00e8te pour CVE-2026-109618 sur FPM, alors que la PHP Foundation indique qu&rsquo;une RCE via un chemin applicatif y a \u00e9t\u00e9 confirm\u00e9e. Ces formulations publiques ne sont donc pas parfaitement align\u00e9es. Ni FPM ni FrankenPHP ne doivent \u00eatre consid\u00e9r\u00e9s comme immunis\u00e9s.<\/em>&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\"><strong>1<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-w8hw-w9fx-j79w\"><strong>6<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-6wmf-4rv5-p3rp\"><strong>7<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FrankenPHP propose deux usages. Son mode classique r\u00e9initialise le contexte applicatif entre requ\u00eates. Son mode worker conserve l&rsquo;application initialis\u00e9e : Composer, routeur et conteneur de d\u00e9pendances n&rsquo;ont plus \u00e0 \u00eatre reconstruits. \u00c9viter cette initialisation peut acc\u00e9l\u00e9rer le traitement des requ\u00eates, \u00e0 condition de ma\u00eetriser les \u00e9tats conserv\u00e9s entre deux appels. Pour le mode classique, une mesure ind\u00e9pendante de Tideways en septembre 2025 trouvait des performances proches de PHP-FPM, avec des \u00e9carts selon la charge et parfois un p99 moins bon.&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/worker\/\"><strong>27<\/strong><\/a>,&nbsp;<a href=\"https:\/\/tideways.com\/profiler\/blog\/testing-if-franken-php-classic-mode-is-faster-and-more-scalable-than-php-fpm\"><strong>28<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce risque de fuite d&rsquo;\u00e9tat s&rsquo;est d\u00e9j\u00e0 mat\u00e9rialis\u00e9. En f\u00e9vrier 2026, CVE-2026-24894 montrait qu&rsquo;en mode worker, le contenu de&nbsp;<code>$_SESSION<\/code>&nbsp;pouvait \u00eatre accessible \u00e0 la requ\u00eate suivante trait\u00e9e par le m\u00eame worker, avant son propre appel \u00e0&nbsp;<code>session_start()<\/code>&nbsp;; le d\u00e9faut a \u00e9t\u00e9 corrig\u00e9 en 1.11.2. Le 21 octobre, l&rsquo;advisory GHSA-4gfw-9v29-gp9h documentait un autre \u00e9tat non r\u00e9initialis\u00e9 : des informations de diagnostic&nbsp;<code>libxml<\/code>&nbsp;(et, selon les notes de version,&nbsp;<code>error_get_last()<\/code>) pouvaient exposer des fragments de documents ou des chemins du serveur \u00e0 la requ\u00eate suivante sur le m\u00eame thread. La correction figure dans FrankenPHP 1.13.2, qui corrige aussi trois autres failles propres au serveur (r\u00e9pertoire temporaire pr\u00e9visible, d\u00e9ni de service dans l\u2019attente d\u2019un thread, crash sur tableau cyclique). Ces fuites d\u2019\u00e9tat ne sont pas les m\u00eames vuln\u00e9rabilit\u00e9s que celles de Zend : elles proviennent du cycle de vie particulier des workers persistants.&nbsp;<a href=\"https:\/\/github.com\/php\/frankenphp\/security\/advisories\/GHSA-r3xh-3r3w-47gp\"><strong>29<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/php\/frankenphp\/security\/advisories\/GHSA-4gfw-9v29-gp9h\"><strong>30<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/php\/frankenphp\/releases\/tag\/v1.13.2\"><strong>31<\/strong><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le correctif d&rsquo;octobre change lui-m\u00eame le comportement de PHP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le correctif des deux CVE modifie aussi la gestion des erreurs m\u00e9moire. Le commit&nbsp;<code>31c0ea7d<\/code>&nbsp;<a href=\"https:\/\/github.com\/php\/php-src\/commit\/31c0ea7d7ff1d1fccb6492e52dab544011628065\"><strong>32<\/strong><\/a>&nbsp;abandonne le&nbsp;<code>longjmp()<\/code>&nbsp;imm\u00e9diat sur manque de m\u00e9moire : PHP reporte d\u00e9sormais l&rsquo;erreur fatale \u00ab souple \u00bb au prochain point d&rsquo;ex\u00e9cution s\u00fbr. En cas de d\u00e9passement d&rsquo;un seuil m\u00e9moire dur, configurable via&nbsp;<code>memory_hard_limit_percent<\/code>, il quitte imm\u00e9diatement le processus, sans nettoyage classique. La limite dure vaut normalement 200 % de&nbsp;<code>memory_limit<\/code>, ou&nbsp;<code>memory_limit + 1 Gio<\/code>&nbsp;au-del\u00e0 de 1 Gio.&nbsp;<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-w8hw-w9fx-j79w\"><strong>6<\/strong><\/a>,&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/known-issues\/\"><strong>33<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans FPM, cet arr\u00eat touche un enfant du pool. Dans FrankenPHP, la documentation pr\u00e9cise qu&rsquo;il arr\u00eate le serveur et toutes les requ\u00eates en cours jusqu&rsquo;au red\u00e9marrage. L&rsquo;issue&nbsp;<a href=\"https:\/\/github.com\/php\/php-src\/issues\/24492\">php-src #24492<\/a>, toujours ouverte lors de la consultation, signale d\u00e9j\u00e0 des cas o\u00f9&nbsp;<code>sprintf()<\/code>,&nbsp;<code>pack()<\/code>&nbsp;ou&nbsp;<code>bin2hex()<\/code>&nbsp;d\u00e9clenchent cet arr\u00eat l\u00e0 o\u00f9 les versions pr\u00e9c\u00e9dentes produisaient une erreur m\u00e9moire r\u00e9cup\u00e9rable. Il s&rsquo;agit d&rsquo;un signalement \u00e0 investiguer, pas d&rsquo;une r\u00e9gression g\u00e9n\u00e9ralis\u00e9e d\u00e9montr\u00e9e.&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/known-issues\/\"><strong>33<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/php\/php-src\/issues\/24492\"><strong>34<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Relancer les workers via l&rsquo;API d&rsquo;administration,&nbsp;<code>--watch<\/code>&nbsp;ou&nbsp;<code>MAX_REQUESTS<\/code>&nbsp;ne remplace pas le moteur PHP charg\u00e9 par le serveur. Pour corriger les CVE de Zend, il faut d\u00e9ployer une image ou un binaire FrankenPHP int\u00e9grant les versions corrig\u00e9es de PHP, puis red\u00e9marrer le processus serveur ; dans une compilation avec PHP partag\u00e9, il faut aussi mettre \u00e0 jour la biblioth\u00e8que PHP effectivement charg\u00e9e. Les images et binaires officiels FrankenPHP 1.13.2 embarquaient d\u00e9j\u00e0 ces correctifs.&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/worker\/\"><strong>27<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/php\/frankenphp\/releases\/tag\/v1.13.2\"><strong>31<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La compatibilit\u00e9 reste aussi conditionn\u00e9e aux extensions : la documentation FrankenPHP cite notamment New Relic, PCOV et certaines compilations d&rsquo;Imagick avec OpenMP. Elle recommande les builds glibc plut\u00f4t que musl pour la production. Les solutions voisines \u2014 RoadRunner avec ses processus CLI persistants, OpenSwoole et ses coroutines, ou le jeune OxPHP \u00e9crit en Rust autour de Zend \u2014 d\u00e9placent autrement ces compromis.&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/known-issues\/\"><strong>33<\/strong><\/a>,&nbsp;<a href=\"https:\/\/frankenphp.dev\/docs\/performance\/\"><strong>35<\/strong><\/a>,&nbsp;<a href=\"https:\/\/roadrunner.dev\/\"><strong>36<\/strong><\/a>,&nbsp;<a href=\"https:\/\/openswoole.com\/\"><strong>37<\/strong><\/a>,&nbsp;<a href=\"https:\/\/github.com\/oxphp\/oxphp\"><strong>38<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi PHP reste-t-il partout ? Et qui paie pour cela ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W3Techs d\u00e9tecte PHP sur 69,8 % des sites dont le langage serveur est connu au 1er octobre 2026, contre 73,4 % au 1er octobre 2025. JavaScript c\u00f4t\u00e9 serveur progresse de 5,0 \u00e0 7,6 % sur les m\u00eames relev\u00e9s mensuels. Ce sont des proportions de sites d\u00e9tectables, pas du trafic ni la r\u00e9partition de tous les serveurs.&nbsp;<a href=\"https:\/\/w3techs.com\/technologies\/history_overview\/programming_language\"><strong>39<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress repr\u00e9sente, de son c\u00f4t\u00e9, environ 39,6 % des sites \u00e9tudi\u00e9s. Composer et Packagist comptent plus de 469 000 paquets et 200 milliards d&rsquo;installations cumul\u00e9es, chiffres qui englobent \u00e9videmment CI et d\u00e9ploiements r\u00e9p\u00e9t\u00e9s. Entre WordPress, Drupal, PrestaShop, Magento et les applications m\u00e9tiers, le co\u00fbt d&rsquo;un changement de plateforme serait immense.&nbsp;<a href=\"https:\/\/w3techs.com\/technologies\/overview\/content_management\"><strong>40<\/strong><\/a>,&nbsp;<a href=\"https:\/\/blog.packagist.com\/15-years-of-packagist-over-200-billion-package-installs\/\"><strong>41<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PHP reste adapt\u00e9 \u00e0 un besoin tr\u00e8s r\u00e9pandu : recevoir une requ\u00eate HTTP, interroger une base de donn\u00e9es et renvoyer une page ou du JSON. L&rsquo;installation est simple, l&rsquo;h\u00e9bergement largement disponible, le mod\u00e8le sans \u00e9tat applicatif persistant entre requ\u00eates facile \u00e0 exploiter. Le langage, lui, a continu\u00e9 \u00e0 \u00e9voluer. Dans l&rsquo;enqu\u00eate Stack Overflow 2026, 17,7 % de 14 099 r\u00e9pondants d\u00e9clarent avoir beaucoup utilis\u00e9 PHP : ce petit panel volontaire mesure des d\u00e9veloppeurs, pas le nombre de sites install\u00e9s.&nbsp;<a href=\"https:\/\/survey.stackoverflow.co\/2026\/technology\/data\/languages\"><strong>42<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le parc install\u00e9 vieillit aussi. Fin octobre, W3Techs identifie encore 26,6 % de PHP 7 et 7,7 % de PHP 5 parmi les sites PHP : plus d&rsquo;un tiers sur des branches priv\u00e9es de correctifs officiels. Les backports fournis par certaines distributions ou mainteneurs sont possibles, mais ne changent pas le fait que le risque r\u00e9el d\u00e9pend aussi du parc install\u00e9 et de sa maintenance, pas uniquement du langage qui impl\u00e9mente Zend.&nbsp;<a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\"><strong>43<\/strong><\/a>,&nbsp;<a href=\"https:\/\/www.php.net\/eol.php\"><strong>44<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La s\u00e9curit\u00e9 de PHP d\u00e9pend aussi des moyens consacr\u00e9s \u00e0 sa maintenance. Les premiers signes de CVE-2026-109618 ont \u00e9t\u00e9 identifi\u00e9s pendant les suites d&rsquo;un audit Quarkslab financ\u00e9 en 2024, mais la recherche d&rsquo;un correctif a stagn\u00e9 des mois : compatibilit\u00e9 des extensions, risques de d\u00e9ni de service, absence de consensus et manque de ressources. La PHP Foundation parle elle-m\u00eame d&rsquo;un \u00e9chec structurel.&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\"><strong>1<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En 2025, la fondation a re\u00e7u 730 534 dollars de contributions, pour 784 376 dollars de d\u00e9penses et 11 d\u00e9veloppeurs sous contrat \u00e0 temps partiel ou plein fin d\u00e9cembre. Ce n&rsquo;est ni toute l&rsquo;\u00e9quipe PHP ni tout le financement indirect de son \u00e9cosyst\u00e8me, mais c&rsquo;est un ordre de grandeur \u00e9tonnant pour un logiciel si r\u00e9pandu.&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/05\/27\/impact-and-transparency-report-2025\/\"><strong>45<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;IA acc\u00e9l\u00e8re d\u00e9sormais les deux c\u00f4t\u00e9s : l&rsquo;audit Calif, les signalements ind\u00e9pendants d&rsquo;OpenAI et Wiz ont contribu\u00e9 \u00e0 mettre en \u00e9vidence l&rsquo;exploitabilit\u00e9 du probl\u00e8me de 2024 ; la Foundation utilise aussi des outils d&rsquo;assistance pour v\u00e9rifier les rapports. L&rsquo;afflux de d\u00e9couvertes rend encore plus n\u00e9cessaire un travail humain de tri, de correction et de revue.&nbsp;<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\"><strong>1<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le plus dur n&rsquo;est pas d&rsquo;\u00e9crire un nouveau PHP. C&rsquo;est d&rsquo;\u00eatre PHP.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les failles d&rsquo;octobre 2026 donnent de bonnes raisons de chercher des moteurs plus s\u00fbrs pour la m\u00e9moire. L&rsquo;histoire de HHVM rappelle toutefois le co\u00fbt de la compatibilit\u00e9. KPHP assume ses restrictions ; WordPress Playground transporte Zend en WebAssembly ; FrankenPHP modernise l&rsquo;ex\u00e9cution sans r\u00e9inventer les r\u00e8gles du langage ; php-rust essaie de faire les deux \u00e0 la fois.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toutes les vuln\u00e9rabilit\u00e9s de PHP ne sont pas des bugs m\u00e9moire. CVE-2024-4577, exploit\u00e9e sur certaines installations Windows en mode CGI, relevait d&rsquo;une injection d&rsquo;arguments ; une r\u00e9\u00e9criture en Rust n&rsquo;aurait pas automatiquement emp\u00each\u00e9 ce probl\u00e8me.&nbsp;<a href=\"https:\/\/www.cert.europa.eu\/publications\/security-advisories\/2024-058\/\"><strong>46<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un nouveau moteur doit pr\u00e9server des milliers de comportements historiques, les extensions et la simplicit\u00e9 du d\u00e9ploiement, tout en apportant des am\u00e9liorations de s\u00e9curit\u00e9 et d&rsquo;exploitation. Le moteur actuel, lui, a besoin de moyens suffisants pour \u00eatre audit\u00e9, corrig\u00e9 et maintenu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un moteur alternatif finira peut-\u00eatre par s&rsquo;imposer. Il pourrait aussi, comme HHVM, surtout pousser PHP \u00e0 progresser.&nbsp;<strong>Le plus dur n&rsquo;est pas d&rsquo;\u00e9crire un nouveau PHP. C&rsquo;est de r\u00e9ussir \u00e0 \u00eatre PHP.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Sources et bibliographie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Sources consult\u00e9es ou rev\u00e9rifi\u00e9es le 27 octobre 2026. Les mesures des projets, annonces de s\u00e9curit\u00e9 et parts de march\u00e9 correspondent \u00e0 cette date ou \u00e0 la date explicitement indiqu\u00e9e.<\/em><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PHP Foundation<\/strong>,\u00a0<a href=\"https:\/\/thephp.foundation\/blog\/2026\/10\/21\/todays-php-security-release-and-how-were-strengthening-php-security\/\">Today&rsquo;s PHP Security Release, and How We&rsquo;re Strengthening PHP Security<\/a>, 21 octobre 2026.<\/li>\n\n\n\n<li><strong>CERT-FR \/ ANSSI<\/strong>,\u00a0<a href=\"https:\/\/cert.cyber.gouv.fr\/alerte\/CERTFR-2026-ALE-014\/\">Alerte CERTFR-2026-ALE-014<\/a>, mise \u00e0 jour du 26 octobre 2026.<\/li>\n\n\n\n<li><strong>Le Parisien<\/strong>,\u00a0<a href=\"https:\/\/www.leparisien.fr\/high-tech\/prefectures-impots-pourquoi-de-nombreux-sites-sont-momentanement-inaccessibles-ce-jeudi-21-10-2026-HHKUKEM4KZAFNOTMMNBKEQMFKE.php\">Pr\u00e9fectures, imp\u00f4ts\u2026 sites en maintenance<\/a>, 21 octobre 2026.<\/li>\n\n\n\n<li><strong>Reuters<\/strong>,\u00a0<a href=\"https:\/\/www.internazionale.it\/ultime-notizie-reuters\/2026\/10\/22\/factbox-governments-companies-take-websites-offline-over-php-flaws\">Factbox \u2014 Governments, companies take websites offline over PHP flaws<\/a>, 22 octobre 2026.<\/li>\n\n\n\n<li><strong>watchTowr<\/strong>,\u00a0<a href=\"https:\/\/watchtowr.com\/intelligence\/php-cve-2026-109618-faq\/\">PHP2Shell FAQ, signalements d&rsquo;exploitation et KEV<\/a>, mis \u00e0 jour le 26 octobre 2026.<\/li>\n\n\n\n<li><strong>PHP Security Team<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-w8hw-w9fx-j79w\">CVE-2026-109618 : RCE via OOM corruption<\/a>, 21 octobre 2026.<\/li>\n\n\n\n<li><strong>PHP Security Team<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/php-src\/security\/advisories\/GHSA-6wmf-4rv5-p3rp\">CVE-2026-109619 : RCE via stale global state<\/a>, 21 octobre 2026.<\/li>\n\n\n\n<li><strong>PHP.net<\/strong>,\u00a0<a href=\"https:\/\/www.php.net\/archive\/2026.php#2026-10-23-1\">Annonce CVE-2026-115560 : session upload progress<\/a>, 23 octobre 2026.<\/li>\n\n\n\n<li><strong>PHP.net<\/strong>,\u00a0<a href=\"https:\/\/www.php.net\/manual\/en\/session.configuration.php\">Session runtime configuration \u2014 upload progress activ\u00e9 par d\u00e9faut<\/a>, documentation consult\u00e9e en octobre 2026.<\/li>\n\n\n\n<li><strong>Francesco Tinti<\/strong>,\u00a0<a href=\"https:\/\/github.com\/francescotinti\/php-rust\">D\u00e9p\u00f4t php-rust, architecture, contributions et commits<\/a>, consult\u00e9 le 27 octobre 2026.<\/li>\n\n\n\n<li><strong>php-rust<\/strong>,\u00a0<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/blob\/main\/php-rust\/COVERAGE.md\">COVERAGE.md \u2014 fonctions et tests ex\u00e9cut\u00e9s<\/a>, mesures du 16 septembre 2026.<\/li>\n\n\n\n<li><strong>php-rust<\/strong>,\u00a0<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/blob\/main\/php-rust\/NEXT_SESSION_WORDPRESS.md\">NEXT_SESSION_WORDPRESS.md \u2014 journal de sessions et performances<\/a>, octobre 2026.<\/li>\n\n\n\n<li><strong>php-rust<\/strong>,\u00a0<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/issues\/6\">Issue #6 \u2014 d\u00e9faut de validation filter_var()<\/a>, 25 octobre 2026.<\/li>\n\n\n\n<li><strong>php-rust<\/strong>,\u00a0<a href=\"https:\/\/github.com\/francescotinti\/php-rust\/pull\/7\">PR #7 \u2014 correctif propos\u00e9 pour EMAIL et DOMAIN<\/a>, 25 octobre 2026.<\/li>\n\n\n\n<li><strong>wudi<\/strong>,\u00a0<a href=\"https:\/\/github.com\/wudi\/php-rs\">php-rs \u2014 autre interpr\u00e9teur Rust exp\u00e9rimental<\/a>, consult\u00e9 en octobre 2026.<\/li>\n\n\n\n<li><strong>PHP.net<\/strong>,\u00a0<a href=\"https:\/\/www.php.net\/releases\/7_0_0.php\">PHP 7.0.0 \u2014 annonce de sortie<\/a>, d\u00e9cembre 2015.<\/li>\n\n\n\n<li><strong>Symfony<\/strong>,\u00a0<a href=\"https:\/\/symfony.com\/blog\/symfony-4-end-of-hhvm-support\">Symfony 4: End of HHVM Support<\/a>, mai 2017.<\/li>\n\n\n\n<li><strong>HHVM<\/strong>,\u00a0<a href=\"https:\/\/hhvm.com\/blog\/2018\/09\/12\/end-of-php-support-future-of-hack.html\">Ending PHP Support, and the Future of Hack<\/a>, septembre 2018.<\/li>\n\n\n\n<li><strong>HHVM<\/strong>,\u00a0<a href=\"https:\/\/hhvm.com\/blog\/2019\/02\/11\/hhvm-4.0.0.html\">HHVM 4.0.0<\/a>, f\u00e9vrier 2019.<\/li>\n\n\n\n<li><strong>Meta Engineering<\/strong>,\u00a0<a href=\"https:\/\/engineering.fb.com\/2025\/05\/20\/web\/metas-full-stack-hhvm-optimizations-for-genai\/\">Full-stack HHVM optimizations for GenAI<\/a>, mai 2025.<\/li>\n\n\n\n<li><strong>HHVM<\/strong>,\u00a0<a href=\"https:\/\/hhvm.com\/blog\/2023\/10\/27\/oss-update.html\">Project Update and OSS Support Changes<\/a>, octobre 2023.<\/li>\n\n\n\n<li><strong>ext-php-rs<\/strong>,\u00a0<a href=\"https:\/\/ext-php.rs\/\">Guide officiel : extensions Zend en Rust<\/a>, consult\u00e9 en octobre 2026.<\/li>\n\n\n\n<li><strong>VK<\/strong>,\u00a0<a href=\"https:\/\/github.com\/VKCOM\/kphp\">KPHP \u2014 compilateur PHP vers C++<\/a>.<\/li>\n\n\n\n<li><strong>PeachPie<\/strong>,\u00a0<a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\">Compilateur PHP vers .NET<\/a>.<\/li>\n\n\n\n<li><strong>WordPress<\/strong>,\u00a0<a href=\"https:\/\/developer.wordpress.org\/playground\/developers\/architecture\/wasm-php-compiling\/\">Playground: compiling PHP to WebAssembly<\/a>.<\/li>\n\n\n\n<li><strong>FrankenPHP<\/strong>,\u00a0<a href=\"https:\/\/frankenphp.dev\/docs\/\">Documentation g\u00e9n\u00e9rale<\/a>.<\/li>\n\n\n\n<li><strong>FrankenPHP<\/strong>,\u00a0<a href=\"https:\/\/frankenphp.dev\/docs\/worker\/\">Worker mode<\/a>.<\/li>\n\n\n\n<li><strong>Tideways<\/strong>,\u00a0<a href=\"https:\/\/tideways.com\/profiler\/blog\/testing-if-franken-php-classic-mode-is-faster-and-more-scalable-than-php-fpm\">Testing FrankenPHP Classic Mode against PHP-FPM<\/a>, septembre 2025.<\/li>\n\n\n\n<li><strong>FrankenPHP Security<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/frankenphp\/security\/advisories\/GHSA-r3xh-3r3w-47gp\">CVE-2026-24894 \/ GHSA-r3xh-3r3w-47gp \u2014 fuite de\u00a0<code>$_SESSION<\/code>\u00a0en mode worker<\/a>, f\u00e9vrier 2026.<\/li>\n\n\n\n<li><strong>FrankenPHP Security<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/frankenphp\/security\/advisories\/GHSA-4gfw-9v29-gp9h\">GHSA-4gfw-9v29-gp9h \u2014 \u00e9tat libxml entre requ\u00eates<\/a>, 21 octobre 2026.<\/li>\n\n\n\n<li><strong>FrankenPHP<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/frankenphp\/releases\/tag\/v1.13.2\">Release 1.13.2 \u2014 PHP2Shell et correctifs propres \u00e0 FrankenPHP<\/a>, 21 octobre 2026.<\/li>\n\n\n\n<li><strong>php-src<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/php-src\/commit\/31c0ea7d7ff1d1fccb6492e52dab544011628065\">Commit 31c0ea7d \u2014 Avoid state corruption via bailout<\/a>, 18 octobre 2026.<\/li>\n\n\n\n<li><strong>FrankenPHP<\/strong>,\u00a0<a href=\"https:\/\/frankenphp.dev\/docs\/known-issues\/\">Known issues : hard memory limit, extensions<\/a>.<\/li>\n\n\n\n<li><strong>php-src<\/strong>,\u00a0<a href=\"https:\/\/github.com\/php\/php-src\/issues\/24492\">Issue #24492 \u2014 OOM regression in sprintf\/pack\/bin2hex<\/a>, octobre 2026.<\/li>\n\n\n\n<li><strong>FrankenPHP<\/strong>,\u00a0<a href=\"https:\/\/frankenphp.dev\/docs\/performance\/\">Performance optimization : glibc versus musl<\/a>.<\/li>\n\n\n\n<li><strong>RoadRunner<\/strong>,\u00a0<a href=\"https:\/\/roadrunner.dev\/\">Site officiel et architecture<\/a>.<\/li>\n\n\n\n<li><strong>OpenSwoole<\/strong>,\u00a0<a href=\"https:\/\/openswoole.com\/\">Site officiel<\/a>.<\/li>\n\n\n\n<li><strong>OxPHP<\/strong>,\u00a0<a href=\"https:\/\/github.com\/oxphp\/oxphp\">D\u00e9p\u00f4t exp\u00e9rimental en Rust autour de Zend<\/a>.<\/li>\n\n\n\n<li><strong>W3Techs<\/strong>,\u00a0<a href=\"https:\/\/w3techs.com\/technologies\/history_overview\/programming_language\">Historique mensuel des langages serveur<\/a>, 1er octobre 2025 et 1er octobre 2026.<\/li>\n\n\n\n<li><strong>W3Techs<\/strong>,\u00a0<a href=\"https:\/\/w3techs.com\/technologies\/overview\/content_management\">Part de march\u00e9 des CMS<\/a>, octobre 2026.<\/li>\n\n\n\n<li><strong>Packagist<\/strong>,\u00a0<a href=\"https:\/\/blog.packagist.com\/15-years-of-packagist-over-200-billion-package-installs\/\">15 years of Packagist: Over 200 billion installs<\/a>, 29 septembre 2026.<\/li>\n\n\n\n<li><strong>Stack Overflow<\/strong>,\u00a0<a href=\"https:\/\/survey.stackoverflow.co\/2026\/technology\/data\/languages\">Developer Survey 2026 \u2014 Programming languages<\/a>, 14 099 r\u00e9pondants.<\/li>\n\n\n\n<li><strong>W3Techs<\/strong>,\u00a0<a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\">PHP : versions d\u00e9ploy\u00e9es<\/a>, 27 octobre 2026.<\/li>\n\n\n\n<li><strong>PHP.net<\/strong>,\u00a0<a href=\"https:\/\/www.php.net\/eol.php\">Dates de fin de support des branches PHP<\/a>.<\/li>\n\n\n\n<li><strong>PHP Foundation<\/strong>,\u00a0<a href=\"https:\/\/thephp.foundation\/blog\/2026\/05\/27\/impact-and-transparency-report-2025\/\">Impact and Transparency Report 2025<\/a>, mai 2026.<\/li>\n\n\n\n<li><strong>CERT-EU<\/strong>,\u00a0<a href=\"https:\/\/www.cert.europa.eu\/publications\/security-advisories\/2024-058\/\">CVE-2024-4577 : injection d&rsquo;arguments PHP-CGI Windows<\/a>, juin 2024.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En octobre 2026, deux failles du moteur PHP entra\u00eenent des mises hors ligne dans plusieurs pays. L&rsquo;occasion de revenir sur les tentatives de remplacement de PHP, de HHVM \u00e0 Rust, et sur ce qui les rend si difficiles : la compatibilit\u00e9 avec les applications existantes. 27 octobre 2026. Chiffres et \u00e9tat des projets arr\u00eat\u00e9s \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[15,29,40],"class_list":["post-270","post","type-post","status-publish","format-standard","hentry","category-php-sql","tag-open-source","tag-php","tag-php5"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ? - My thoughts<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ? - My thoughts\" \/>\n<meta property=\"og:description\" content=\"En octobre 2026, deux failles du moteur PHP entra\u00eenent des mises hors ligne dans plusieurs pays. L&rsquo;occasion de revenir sur les tentatives de remplacement de PHP, de HHVM \u00e0 Rust, et sur ce qui les rend si difficiles : la compatibilit\u00e9 avec les applications existantes. 27 octobre 2026. Chiffres et \u00e9tat des projets arr\u00eat\u00e9s \u00e0 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/\" \/>\n<meta property=\"og:site_name\" content=\"My thoughts\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-30T11:31:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"637\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Olivier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@odoucet\" \/>\n<meta name=\"twitter:site\" content=\"@odoucet\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/\"},\"author\":{\"name\":\"Olivier\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/#\\\/schema\\\/person\\\/d093cada9eddc4839cbae3de5c823a39\"},\"headline\":\"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ?\",\"datePublished\":\"2026-10-30T11:31:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/\"},\"wordCount\":3921,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/strategies-php-1024x453.png\",\"keywords\":[\"Open Source\",\"PHP\",\"PHP5\"],\"articleSection\":[\"PHP \\\/ SQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/\",\"url\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/\",\"name\":\"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ? - My thoughts\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/strategies-php-1024x453.png\",\"datePublished\":\"2026-10-30T11:31:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/#\\\/schema\\\/person\\\/d093cada9eddc4839cbae3de5c823a39\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/strategies-php.png\",\"contentUrl\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/strategies-php.png\",\"width\":1440,\"height\":637,\"caption\":\"Strat\u00e9gies PHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/2026\\\/10\\\/30\\\/remplacer-php\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/\",\"name\":\"My thoughts\",\"description\":\"En fran\u00e7ais and in english :)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.olivierdoucet.info\\\/blog\\\/#\\\/schema\\\/person\\\/d093cada9eddc4839cbae3de5c823a39\",\"name\":\"Olivier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1c8a1c3e0a2d475588dca05ad37562efeeadbcba48cf3ca1293e987d2b9a33d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1c8a1c3e0a2d475588dca05ad37562efeeadbcba48cf3ca1293e987d2b9a33d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1c8a1c3e0a2d475588dca05ad37562efeeadbcba48cf3ca1293e987d2b9a33d?s=96&d=mm&r=g\",\"caption\":\"Olivier\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ? - My thoughts","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/","og_locale":"fr_FR","og_type":"article","og_title":"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ? - My thoughts","og_description":"En octobre 2026, deux failles du moteur PHP entra\u00eenent des mises hors ligne dans plusieurs pays. L&rsquo;occasion de revenir sur les tentatives de remplacement de PHP, de HHVM \u00e0 Rust, et sur ce qui les rend si difficiles : la compatibilit\u00e9 avec les applications existantes. 27 octobre 2026. Chiffres et \u00e9tat des projets arr\u00eat\u00e9s \u00e0 [&hellip;]","og_url":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/","og_site_name":"My thoughts","article_published_time":"2026-10-30T11:31:12+00:00","og_image":[{"width":1440,"height":637,"url":"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php.png","type":"image\/png"}],"author":"Olivier","twitter_card":"summary_large_image","twitter_creator":"@odoucet","twitter_site":"@odoucet","twitter_misc":{"\u00c9crit par":"Olivier","Dur\u00e9e de lecture estim\u00e9e":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#article","isPartOf":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/"},"author":{"name":"Olivier","@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39"},"headline":"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ?","datePublished":"2026-10-30T11:31:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/"},"wordCount":3921,"commentCount":0,"image":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php-1024x453.png","keywords":["Open Source","PHP","PHP5"],"articleSection":["PHP \/ SQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/","url":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/","name":"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ? - My thoughts","isPartOf":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#primaryimage"},"image":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php-1024x453.png","datePublished":"2026-10-30T11:31:12+00:00","author":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39"},"breadcrumb":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#primaryimage","url":"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php.png","contentUrl":"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2026\/10\/strategies-php.png","width":1440,"height":637,"caption":"Strat\u00e9gies PHP"},{"@type":"BreadcrumbList","@id":"https:\/\/www.olivierdoucet.info\/blog\/2026\/10\/30\/remplacer-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.olivierdoucet.info\/blog\/"},{"@type":"ListItem","position":2,"name":"On essaie de remplacer PHP depuis quinze ans. Pourquoi son moteur est-il toujours l\u00e0 ?"}]},{"@type":"WebSite","@id":"https:\/\/www.olivierdoucet.info\/blog\/#website","url":"https:\/\/www.olivierdoucet.info\/blog\/","name":"My thoughts","description":"En fran\u00e7ais and in english :)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.olivierdoucet.info\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39","name":"Olivier","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f1c8a1c3e0a2d475588dca05ad37562efeeadbcba48cf3ca1293e987d2b9a33d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f1c8a1c3e0a2d475588dca05ad37562efeeadbcba48cf3ca1293e987d2b9a33d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f1c8a1c3e0a2d475588dca05ad37562efeeadbcba48cf3ca1293e987d2b9a33d?s=96&d=mm&r=g","caption":"Olivier"}}]}},"_links":{"self":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/comments?post=270"}],"version-history":[{"count":3,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/270\/revisions"}],"predecessor-version":[{"id":275,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/270\/revisions\/275"}],"wp:attachment":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/media?parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/categories?post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/tags?post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}