{"id":6828,"date":"2017-12-20T17:03:09","date_gmt":"2017-12-20T16:03:09","guid":{"rendered":"https:\/\/www.combell.com\/fr\/blog\/?p=6828"},"modified":"2017-12-21T17:07:22","modified_gmt":"2017-12-21T16:07:22","slug":"quy-a-t-il-nouveau-dans-php-7-2","status":"publish","type":"post","link":"https:\/\/www.combell.com\/fr\/blog\/quy-a-t-il-nouveau-dans-php-7-2\/","title":{"rendered":"Qu\u2019y a-t-il de nouveau dans PHP 7.2\u00a0?"},"content":{"rendered":"<p>Le 30 novembre 2017, <a href=\"http:\/\/php.net\/archive\/2017.php#id2017-11-30-1\" target=\"_blank\" rel=\"noopener\">la communaut\u00e9 PHP a annonc\u00e9 le lancement de PHP 7.2<\/a>. Il s\u2019agit plus pr\u00e9cis\u00e9ment de la deuxi\u00e8me mise \u00e0 jour de fonctionnalit\u00e9s de PHP 7.<\/p>\n<h2><strong>Sur la lanc\u00e9e de PHP 7<\/strong><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-14592\" title=\"PHP7\" src=\"https:\/\/www.combell.com\/nl\/blog\/files\/2017\/12\/PHP7.png\" alt=\"PHP7\" width=\"120\" height=\"169\" \/>PHP 7 avait \u00e9t\u00e9 lanc\u00e9 fin 2015, marquant le d\u00e9but d\u2019une nouvelle \u00e8re pour le langage de programmation et la communaut\u00e9 allant de pair, qui \u00e9taient d\u00e9j\u00e0 en train de fortement \u00e9voluer depuis plusieurs ann\u00e9es.<\/p>\n<p>PHP est un langage tr\u00e8s accessible, qui a parfois \u00e9t\u00e9 d\u00e9nigr\u00e9 par les puristes du langage dans le monde du d\u00e9veloppement. La r\u00e9alit\u00e9 montre cependant que plus de 83 % de tous les sites web pr\u00e9sents sur Internet sont programm\u00e9s en PHP. Et des frameworks populaires tels que WordPress, Drupal et Magento ne font que contribuer au succ\u00e8s de l\u2019\u00e9cosyst\u00e8me PHP.<\/p>\n<p>Avec PHP 7, un important investissement a \u00e9t\u00e9 r\u00e9alis\u00e9 afin d\u2019en am\u00e9liorer sensiblement les performances. On a aussi veill\u00e9 \u00e0 la mise au point d\u2019un meilleur typage explicite, et de nombreuses anciennes extensions ont \u00e9t\u00e9 abandonn\u00e9es.<\/p>\n<p><a href=\"http:\/\/php.net\/supported-versions.php\" target=\"_blank\" rel=\"noopener\">Le calendrier de lancement<\/a> exige qu\u2019une mise \u00e0 jour de fonctionnalit\u00e9s soit lanc\u00e9e chaque ann\u00e9e. Suite au lancement de PHP 7.1 en 2016, c\u2019est donc PHP 7.2 que nous avons re\u00e7u cette ann\u00e9e comme cadeau de No\u00ebl anticip\u00e9.<\/p>\n<h2><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14593 aligncenter\" src=\"https:\/\/www.combell.com\/nl\/blog\/files\/2017\/12\/Kalender-PHP-7.2-release.png\" alt=\"Kalender PHP 7.2 release\" width=\"965\" height=\"244\" \/><br \/>\n<strong>PHP 7.2 est en grande partie une mise \u00e0 jour de fonctionnalit\u00e9s de s\u00e9curit\u00e9<\/strong><\/h2>\n<p>Hormis quelques l\u00e9g\u00e8res am\u00e9liorations apport\u00e9es au langage m\u00eame, on constate que la plupart des <a href=\"http:\/\/php.net\/releases\/7_2_0.php\" target=\"_blank\" rel=\"noopener\">nouveaut\u00e9s<\/a> ont trait \u00e0 la s\u00e9curit\u00e9.<\/p>\n<ul>\n<li>L\u2019ajout d\u2019<a href=\"https:\/\/wiki.php.net\/rfc\/argon2_password_hash\" target=\"_blank\" rel=\"noopener\">Argon2 au noyau de PHP pour le hachage de mots de passe<\/a><\/li>\n<li>La <a href=\"https:\/\/wiki.php.net\/rfc\/mcrypt-viking-funeral\" target=\"_blank\" rel=\"noopener\">suppression de l\u2019extension mcrypt<\/a> du noyau de PHP<\/li>\n<li>L\u2019int\u00e9gration de l\u2019extension Sodium au noyau de PHP<\/li>\n<li>L\u2019am\u00e9lioration des constantes de versions TLS minimum<\/li>\n<\/ul>\n<h2><strong>Hachage de mots de passe avec Argon2<\/strong><\/h2>\n<p>Jusqu\u2019\u00e0 il y a peu, bcrypt \u00e9tait le meilleur choix pour <a href=\"http:\/\/php.net\/manual\/en\/function.password-hash.php\" target=\"_blank\" rel=\"noopener\">hacher des mots de passe en PHP<\/a>. Mais gr\u00e2ce \u00e0 l\u2019arriv\u00e9e de PHP 7.2, il est \u00e0 pr\u00e9sent possible d\u2019utiliser une alternative\u00a0: <a href=\"https:\/\/wiki.php.net\/rfc\/argon2_password_hash\" target=\"_blank\" rel=\"noopener\">Argon2<\/a>.<\/p>\n<p>Argon2 est sorti vainqueur du <a href=\"https:\/\/password-hashing.net\/\" target=\"_blank\" rel=\"noopener\">Password Hashing Competition<\/a> et est consid\u00e9r\u00e9 comme \u00e9tant plus s\u00fbr que bcrypt du fait qu\u2019outre un \u00ab\u00a0time cost\u00a0\u00bb, il y a \u00e9galement un \u00ab\u00a0memory cost\u00a0\u00bb.<\/p>\n<p>Cela signifie que l\u2019algorithme complique encore plus la t\u00e2che des hackers qui tentent d\u2019obtenir des mots de passe par le biais d\u2019attaques par force brute. Le \u00ab\u00a0time cost\u00a0\u00bb est g\u00e9n\u00e9ralement contourn\u00e9 en s\u2019attaquant au mot de passe par le biais d\u2019attaques bas\u00e9es sur des processeurs graphiques tr\u00e8s puissants.<\/p>\n<p>Le \u00ab\u00a0memory cost\u00a0\u00bb suppl\u00e9mentaire fait en sorte que ces machines ont soudainement besoin d\u2019une quantit\u00e9 proportionnelle de RAM pour pouvoir deviner le mot de passe par force brute.<\/p>\n<p>Un autre avantage d\u2019Argon2 est qu\u2019il permet \u00e9galement de d\u00e9terminer le nombre de threads qui sont utilis\u00e9s en parall\u00e8le pour calculer la complexit\u00e9 de l\u2019algorithme de hachage du mot de passe.<\/p>\n<h2><strong>Disparition de Mcrypt<\/strong><\/h2>\n<p><a href=\"http:\/\/php.net\/manual\/en\/intro.mcrypt.php\" target=\"_blank\" rel=\"noopener\">Mcrypt<\/a> est une extension populaire de PHP qui permet de faire du chiffrement. Malheureusement, la librairie mcrypt dont cette extension d\u00e9pend n\u2019a plus \u00e9t\u00e9 mise \u00e0 jour depuis 2007.<\/p>\n<p>Cette librairie comporte diff\u00e9rents bogues, ainsi que des patchs qui n\u2019ont pas \u00e9t\u00e9 corrig\u00e9s depuis longtemps. \u00c0 l\u2019\u00e9poque de PHP 7.1, cette extension \u00e9tait d\u00e9j\u00e0 consid\u00e9r\u00e9e comme \u00e9tant obsol\u00e8te. <a href=\"https:\/\/wiki.php.net\/rfc\/mcrypt-viking-funeral\" target=\"_blank\" rel=\"noopener\">Avec l\u2019arriv\u00e9e de PHP 7.2, mcrypt dispara\u00eet compl\u00e8tement du noyau de PHP<\/a> et est <a href=\"http:\/\/pecl.php.net\/package\/mcrypt\" target=\"_blank\" rel=\"noopener\">d\u00e9plac\u00e9e vers le d\u00e9p\u00f4t PECL<\/a>.<\/p>\n<p>Une grande partie de la logique propos\u00e9e par mcrypt est parfaitement prise en charge par <a href=\"http:\/\/php.net\/openssl\" target=\"_blank\" rel=\"noopener\">OpenSSL<\/a> et la nouvelle extension Sodium.<\/p>\n<h2><strong>Sodium, le concurrent d\u2019OpenSSL<\/strong><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14597 alignright\" title=\"Libsodium in PHP 7.2\" src=\"https:\/\/www.combell.com\/nl\/blog\/files\/2017\/12\/libsodium.png\" alt=\"Libsodium in PHP 7.2\" width=\"250\" height=\"70\" \/>OpenSSL est la plus populaire des librairies de chiffrement, mais elle n\u2019a pas que des partisans. Dans le cadre d\u2019une concurrence saine, PHP 7.2 a pr\u00e9vu <a href=\"https:\/\/wiki.php.net\/rfc\/libsodium\" target=\"_blank\" rel=\"noopener\">une libraire de chiffrement alternative\u00a0: Sodium<\/a>.<\/p>\n<p>Une mise en \u0153uvre de libsodium \u00e9tait d\u00e9j\u00e0 disponible depuis longtemps en PHP\u00a0; elle \u00e9tait <a href=\"http:\/\/pecl.php.net\/package\/libsodium\" target=\"_blank\" rel=\"noopener\">propos\u00e9e via PECL<\/a>. La promotion de cette extension n\u00e9cessitait un changement de l\u2019espace de noms pour pouvoir r\u00e9pondre aux conventions de codage de PHP\u00a0: dans PECL, l\u2019espace de noms \u00ab\u00a0\\Sodium\u00a0\u00bb \u00e9tait utilis\u00e9 pour appeler des fonctions allant de pair.<\/p>\n<p>Avec PHP 7.2, ces fonctions se trouvent dans l\u2019espace de noms racine et ont \u00e9t\u00e9 <a href=\"http:\/\/php.net\/manual\/en\/ref.sodium.php\" target=\"_blank\" rel=\"noopener\">re-pr\u00e9fix\u00e9es avec \u00ab\u00a0sodium\u00a0\u00bb<\/a>.<\/p>\n<h2><strong>L\u2019am\u00e9lioration des constantes de versions TLS<\/strong><\/h2>\n<p>Jusqu\u2019\u00e0 il y a peu, lorsqu\u2019une connexion chiffr\u00e9e \u00e9tait \u00e9tablie depuis PHP, \u00ab\u00a0ssl\u00a0\u00bb \u00e9tait le gestionnaire de flux standard. Pour PHP 7.2, il a \u00e9t\u00e9 d\u00e9cid\u00e9 de faire de \u00ab\u00a0tls\u00a0\u00bb l\u2019appellation standard et de \u00ab\u00a0ssl\u00a0\u00bb un alias.<\/p>\n<p>Il a \u00e9galement \u00e9t\u00e9 d\u00e9cid\u00e9 de <a href=\"https:\/\/wiki.php.net\/rfc\/improved-tls-constants\" target=\"_blank\" rel=\"noopener\">faire preuve de plus de rigueur<\/a> en ce qui concerne les versions TLS prises en charge. Les clients qui prennent uniquement en charge la version 1.0 de TLS seront exclus.<\/p>\n<p>Dans le pass\u00e9, une tentative d\u2019exclusion avait d\u00e9j\u00e0 eu lieu, mais \u00e0 l\u2019\u00e9poque, <a href=\"https:\/\/wiki.php.net\/rfc\/improved-tls-defaults\" target=\"_blank\" rel=\"noopener\">cette d\u00e9cision avait \u00e9t\u00e9 report\u00e9e de mani\u00e8re \u00e0 conserver la compatibilit\u00e9 avec PHP 5.6<\/a>. Le fait que PHP 7.2 fait partie d\u2019une nouvelle \u00ab\u00a0major release\u00a0\u00bb permet de mettre fin \u00e0 cette r\u00e9trocompatibilit\u00e9.<\/p>\n<h2><strong>Fonctionnalit\u00e9s li\u00e9es au langage<\/strong><\/h2>\n<p>Les fonctionnalit\u00e9s li\u00e9es au langage ne sont pas tr\u00e8s spectaculaires et sont principalement des corrections d\u2019anciennes erreurs\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/convert_numeric_keys_in_object_array_casts\" target=\"_blank\" rel=\"noopener\">Conversion correcte de cl\u00e9s num\u00e9riques dans les objets et tableaux (et vice-versa) lors de cast<\/a><\/li>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/counting_non_countables\" target=\"_blank\" rel=\"noopener\">R\u00e9sultats corrects lorsqu\u2019un objet non d\u00e9nombrable est appel\u00e9 via \u00ab\u00a0count\u00a0\u00bb<\/a><\/li>\n<\/ul>\n<p>Les seules fonctionnalit\u00e9s de langage notables de PHP 7.2 sont <a href=\"https:\/\/wiki.php.net\/rfc\/object-typehint\" target=\"_blank\" rel=\"noopener\">la disponibilit\u00e9 d\u2019un \u00ab\u00a0object typehint\u00a0\u00bb<\/a>, qui permet d\u2019accepter et renvoyer des objets g\u00e9n\u00e9riques dans des fonctions et des m\u00e9thodes. Cela permet de ne plus devoir utiliser un nom de classe sp\u00e9cifique.<\/p>\n<h2><strong>PHP 7.2 est d\u00e8s \u00e0 pr\u00e9sent aussi disponible sur la plateforme d\u2019h\u00e9bergement mutualis\u00e9 de Combell<\/strong><\/h2>\n<p>Le lancement de PHP 7.2 a \u00e9t\u00e9 annonc\u00e9 le 30 novembre 2017. Le jour m\u00eame, nous avons annonc\u00e9 la prise en charge de cette nouvelle version sur notre plateforme d\u2019h\u00e9bergement mutualis\u00e9.<\/p>\n<p><a href=\"https:\/\/twitter.com\/combell\/status\/936253455265648640\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14595 size-full aligncenter\" title=\"PHP 7.2 aankondiging twitter\" src=\"https:\/\/www.combell.com\/nl\/blog\/files\/2017\/12\/PHP-7.2-aankondiging-twitter.png\" alt=\"PHP 7.2 aankondiging twitter\" width=\"658\" height=\"320\" \/><\/a><\/p>\n<p>Vous pouvez donc d\u00e8s \u00e0 pr\u00e9sent utiliser toutes les nouvelles fonctionnalit\u00e9s. Pour les nouveaux packs d\u2019h\u00e9bergement web, vous pouvez imm\u00e9diatement choisir cette version\u00a0; pour les packs existants, vous pouvez passer d\u2019une version \u00e0 une autre \u00e0 la vol\u00e9e dans <a href=\"http:\/\/my.combell.com\" target=\"_blank\" rel=\"noopener\">My Combell<\/a>.<\/p>\n<p style=\"text-align: center;\"><a class=\"cta_button\" href=\"http:\/\/my.combell.com\" target=\"_blank\" rel=\"noopener\">Rendez-vous dans My Combell<\/a><\/p>\n<p>Cette nouvelle version propose \u00e9galement de nombreuses <a href=\"http:\/\/php.net\/ChangeLog-7.php#7.2.0\" target=\"_blank\" rel=\"noopener\">corrections de bogues et am\u00e9liorations au niveau du noyau de PHP<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le 30 novembre 2017, la communaut\u00e9 PHP a annonc\u00e9 le lancement de PHP 7.2. Il s\u2019agit plus pr\u00e9cis\u00e9ment de la deuxi\u00e8me mise \u00e0 jour de fonctionnalit\u00e9s de PHP 7. Sur...<\/p>\n","protected":false},"author":25,"featured_media":6829,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[73,67,68,76],"tags":[258,566,259],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog.jpg",820,290,false],"thumbnail":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-50x50.jpg",50,50,true],"medium":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-300x106.jpg",300,106,true],"medium_large":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-768x272.jpg",768,272,true],"large":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog.jpg",820,290,false],"1536x1536":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog.jpg",820,290,false],"2048x2048":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog.jpg",820,290,false],"post-featured":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-820x290.jpg",820,290,true],"post-featured-opt":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-750x256.jpg",750,256,true],"post-featured-opt-md":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-820x290.jpg",820,290,true],"post-featured-opt-sm":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-485x165.jpg",485,165,true],"post-featured-opt-xs":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-375x128.jpg",375,128,true],"post-most-popular":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-50x50.jpg",50,50,true],"post-author":["https:\/\/www.combell.com\/fr\/blog\/files\/2017\/12\/PHP-72-blog-60x60.jpg",60,60,true]},"uagb_author_info":{"display_name":"thijsferyn","author_link":"https:\/\/www.combell.com\/fr\/blog\/author\/thijsferyn\/"},"uagb_comment_info":1,"uagb_excerpt":"Le 30 novembre 2017, la communaut\u00e9 PHP a annonc\u00e9 le lancement de PHP 7.2. Il s\u2019agit plus pr\u00e9cis\u00e9ment de la deuxi\u00e8me mise \u00e0 jour de fonctionnalit\u00e9s de PHP 7. Sur...","_links":{"self":[{"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/posts\/6828"}],"collection":[{"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/comments?post=6828"}],"version-history":[{"count":4,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/posts\/6828\/revisions"}],"predecessor-version":[{"id":6833,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/posts\/6828\/revisions\/6833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/media\/6829"}],"wp:attachment":[{"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/media?parent=6828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/categories?post=6828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.combell.com\/fr\/blog\/wp-json\/wp\/v2\/tags?post=6828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}