{"id":48,"date":"2012-08-27T10:56:34","date_gmt":"2012-08-27T08:56:34","guid":{"rendered":"http:\/\/www.olivierdoucet.info\/blog\/?p=48"},"modified":"2012-08-27T10:56:46","modified_gmt":"2012-08-27T08:56:46","slug":"migrer-de-php-5-3-a-php-5-4","status":"publish","type":"post","link":"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/","title":{"rendered":"Migrer de PHP 5.3 \u00e0 PHP 5.4"},"content":{"rendered":"<p>Les d\u00e9veloppeurs de PHP ont choisis de se focaliser sur les performances plut\u00f4t que sur les nouvelles fonctionnalit\u00e9s sur la version 5.4 ; mais cette version est \u00e9galement un grand saut sur beaucoup de fonctions d\u00e9pr\u00e9ci\u00e9es, qui sont maintenant totalement supprim\u00e9es.<\/p>\n<p>La migration de la version 5.3 vers la 5.4 est donc une \u00e9tape d\u00e9licate (bien plus que de 5.2 vers 5.3), et de nombreux points sont \u00e0 v\u00e9rifier avant de se lancer dans l&rsquo;op\u00e9ration.<\/p>\n<p><!--more--><\/p>\n<p>Je rappelle que la <a href=\"http:\/\/fr.php.net\/manual\/en\/migration54.incompatible.php\">documentation officielle<\/a> reste le meilleur endroit pour pr\u00e9parer une migration. Voici sinon un r\u00e9capitulatif :<\/p>\n<ul>\n<li>Le <a href=\"http:\/\/fr.php.net\/manual\/fr\/features.safe-mode.php\">safe mode<\/a> a \u00e9t\u00e9 totalement supprim\u00e9.<\/li>\n<li>Les <a href=\"http:\/\/fr.php.net\/manual\/fr\/security.magicquotes.php\">magic quotes<\/a> ont \u00e9t\u00e9 supprim\u00e9es<\/li>\n<li>Le m\u00e9canisme de <a href=\"http:\/\/fr.php.net\/manual\/fr\/ini.core.php#ini.register-globals\">register globals<\/a> a \u00e9t\u00e9 supprim\u00e9 (une tr\u00e8s bonne chose !)<\/li>\n<li>Le <a href=\"http:\/\/fr.php.net\/manual\/fr\/language.references.pass.php\">passage par r\u00e9f\u00e9rence<\/a> lors de l&rsquo;appel (\u00ab\u00a0call-time pass-by-reference\u00a0\u00bb est maintenant refus\u00e9 (erreur fatale). Il s&rsquo;agit de code sous cette forme :<br \/>\nmafonction(&amp;$a);<\/li>\n<li>\u00a0Les mots-clefs break et continue n&rsquo;acceptent plus d&rsquo;arguments variables :<br \/>\nbreak 1 + foo()*$bar; \/\/ ne marche plus<br \/>\nbreak 2; \/\/ fonctionne encore, car 2 n&rsquo;est pas variable<br \/>\nbreak 0; \/\/ ne fonctionne plus car ne veut rien dire<\/li>\n<li>\u00a0Pour sp\u00e9cifier le fuseau horaire, vous devez utiliser la directive date.timezone (ou date_default_timezone_set()) comme vous le faisiez d\u00e9j\u00e0 depuis 5.2 ; la variable d&rsquo;environnement TZ ne peut plus \u00eatre utilis\u00e9e (cas tr\u00e8s rare)<\/li>\n<li>L&rsquo;utilisation d&rsquo;offset sur des valeurs non num\u00e9riques \u00e9met maintenant un E_WARNING :<br \/>\n$a = \u00ab\u00a0mystring\u00a0\u00bb;<br \/>\n<em>$a[&lsquo;foo&rsquo;]; \/\/ emet un E_WARNING<\/em><\/li>\n<li>\u00a0La conversion d&rsquo;un tableau en cha\u00eene de caract\u00e8re g\u00e9n\u00e8re une erreur E_NOTICE, mais renvoie toujours la cha\u00eene \u00ab\u00a0Array\u00a0\u00bb.<\/li>\n<li>Vous ne pouvez plus utiliser des param\u00e8tres de fonction qui masquent des super globales (\u00e9met une FATAL ERROR). Exemple :<br \/>\nfunction foo($_GET, $_POST) {}<\/li>\n<li>Les algorithmes de hash Salsa10 et Salsa20 ont \u00e9t\u00e9 supprim\u00e9s (utilisation tr\u00e8s rare)<\/li>\n<li>Si vous passez deux tableaux vides \u00e0 array_combine, la fonction renvoie maintenant array() au lieu de FALSE.<\/li>\n<li>Les mots clefs suivants sont r\u00e9serv\u00e9s :\n<ul>\n<li>\u00a0trait<\/li>\n<li>callable<\/li>\n<li>insteadof<\/li>\n<\/ul>\n<\/li>\n<li>Les fonctions suivantes ont \u00e9t\u00e9 supprim\u00e9es :\n<ul>\n<li><a href=\"http:\/\/fr.php.net\/manual\/fr\/function.define-syslog-variables.php\">define_syslog_variables()<\/a><\/li>\n<li><a href=\"http:\/\/fr.php.net\/manual\/fr\/function.import-request-variables.php\">import_request_variables()<\/a><\/li>\n<li><a href=\"http:\/\/fr.php.net\/manual\/fr\/function.session-is-registered.php\">session_is_registered()<\/a>,\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.session-register.php\">session_register()<\/a>\u00a0et\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.session-unregister.php\">session_unregister()<\/a>.<\/li>\n<li>Les alias\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-bind-param.php\">mysqli_bind_param()<\/a>,\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-bind-result.php\">mysqli_bind_result()<\/a>,\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-client-encoding.php\">mysqli_client_encoding()<\/a>,\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-fetch.php\">mysqli_fetch()<\/a>,\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-param-count.php\">mysqli_param_count()<\/a>,\u00a0<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-get-metadata.php\">mysqli_get_metadata()<\/a>,<a href=\"http:\/\/fr.php.net\/manual\/fr\/function.mysqli-send-long-data.php\">mysqli_send_long_data()<\/a>, mysqli::client_encoding(), et mysqli_stmt::stmt().<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Les modifications les plus importantes sont :<\/p>\n<ul>\n<li>la suppression du safe mode<\/li>\n<li>La suppression des magic quotes<\/li>\n<li>Et surtout la suppression de register_globals.<\/li>\n<\/ul>\n<p><span style=\"font-size: medium;\"><span style=\"line-height: 24px;\"><br \/>\n<\/span><\/span>La mise \u00e0 jour de PHP 5.3 vers 5.4 est donc tout \u00e0 fait particuli\u00e8re et demande quelques pr\u00e9paratifs, surtout vis \u00e0 vis des globals si vous les utilisiez (ce qui est une tr\u00e8s mauvaise chose).<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les d\u00e9veloppeurs de PHP ont choisis de se focaliser sur les performances plut\u00f4t que sur les nouvelles fonctionnalit\u00e9s sur la version 5.4 ; mais cette version est \u00e9galement un grand saut sur beaucoup de fonctions d\u00e9pr\u00e9ci\u00e9es, qui sont maintenant totalement supprim\u00e9es. La migration de la version 5.3 vers la 5.4 est donc une \u00e9tape d\u00e9licate &hellip; <a href=\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Migrer de PHP 5.3 \u00e0 PHP 5.4<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/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":[29,40],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-php-sql","tag-php","tag-php5"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Migrer de PHP 5.3 \u00e0 PHP 5.4 - 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\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrer de PHP 5.3 \u00e0 PHP 5.4 - My thoughts\" \/>\n<meta property=\"og:description\" content=\"Les d\u00e9veloppeurs de PHP ont choisis de se focaliser sur les performances plut\u00f4t que sur les nouvelles fonctionnalit\u00e9s sur la version 5.4 ; mais cette version est \u00e9galement un grand saut sur beaucoup de fonctions d\u00e9pr\u00e9ci\u00e9es, qui sont maintenant totalement supprim\u00e9es. La migration de la version 5.3 vers la 5.4 est donc une \u00e9tape d\u00e9licate &hellip; Continuer la lecture de Migrer de PHP 5.3 \u00e0 PHP 5.4 &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/\" \/>\n<meta property=\"og:site_name\" content=\"My thoughts\" \/>\n<meta property=\"article:published_time\" content=\"2012-08-27T08:56:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-08-27T08:56:46+00:00\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/\",\"url\":\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/\",\"name\":\"Migrer de PHP 5.3 \u00e0 PHP 5.4 - My thoughts\",\"isPartOf\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#website\"},\"datePublished\":\"2012-08-27T08:56:34+00:00\",\"dateModified\":\"2012-08-27T08:56:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.olivierdoucet.info\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrer de PHP 5.3 \u00e0 PHP 5.4\"}]},{\"@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:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g\",\"caption\":\"Olivier\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migrer de PHP 5.3 \u00e0 PHP 5.4 - 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\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/","og_locale":"fr_FR","og_type":"article","og_title":"Migrer de PHP 5.3 \u00e0 PHP 5.4 - My thoughts","og_description":"Les d\u00e9veloppeurs de PHP ont choisis de se focaliser sur les performances plut\u00f4t que sur les nouvelles fonctionnalit\u00e9s sur la version 5.4 ; mais cette version est \u00e9galement un grand saut sur beaucoup de fonctions d\u00e9pr\u00e9ci\u00e9es, qui sont maintenant totalement supprim\u00e9es. La migration de la version 5.3 vers la 5.4 est donc une \u00e9tape d\u00e9licate &hellip; Continuer la lecture de Migrer de PHP 5.3 \u00e0 PHP 5.4 &rarr;","og_url":"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/","og_site_name":"My thoughts","article_published_time":"2012-08-27T08:56:34+00:00","article_modified_time":"2012-08-27T08:56:46+00:00","author":"Olivier","twitter_card":"summary_large_image","twitter_creator":"@odoucet","twitter_site":"@odoucet","twitter_misc":{"\u00c9crit par":"Olivier","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/","url":"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/","name":"Migrer de PHP 5.3 \u00e0 PHP 5.4 - My thoughts","isPartOf":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#website"},"datePublished":"2012-08-27T08:56:34+00:00","dateModified":"2012-08-27T08:56:46+00:00","author":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39"},"breadcrumb":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.olivierdoucet.info\/blog\/2012\/08\/27\/migrer-de-php-5-3-a-php-5-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.olivierdoucet.info\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrer de PHP 5.3 \u00e0 PHP 5.4"}]},{"@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:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g","caption":"Olivier"}}]}},"_links":{"self":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/48","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=48"}],"version-history":[{"count":3,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions\/52"}],"wp:attachment":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}