Honnis depuis maintenant plusieurs années, la fonctionnalité connue sous le nom de magic quotes a été la première à faire les frais du grand nettoyage effectué par les développeurs au sein du code source de PHP.

Cependant, ce n'est pas une surprise puisqu'elle avait annoncé comme étant dépréciée lors de la sortie de PHP 5.3, et il était de notoriété publique qu'il s'agissait d'une fonctionnalité qu'il ne fallait surtout pas mettre en œuvre sous peine de rencontrer quelques difficultés lors des développements et de la mise en production.

La suppression de cette fonctionnalité ne devrait en conséquence ne pas être un problème lors d'une migration vers PHP 5.4.

Évidemment, les directives de configuration correspondantes, à savoir magic_quotes_gpcmagic_quotes_runtime et magic_quotes_sybase n'existent plus et leur présence générera lors du démarrage de PHP une erreur de type E_CORE_ERROR qui arrêtera son exécution.

Une autre des fonctionnalités très décriées ayant disparue avec PHP 5.4 est le mécanisme qui importait directement au niveau global un certain nombre de variables, et notamment celle correspondants à des données externes.

Les directives correspondantes, à savoir register_globals et register_long_arrays ne sont donc plus acceptées par le langage et leur utilisation génère donc également une erreur de type E_CORE_ERROR provoquant l'arrêt de PHP.

Mais encore une fois, cette suppression n'est pas en soit un problème, car cette fonctionnalité est également dépréciée depuis PHP 5.3 et il était chaudement recommandé au moins depuis PHP 4.2 de ne pas l'utiliser pour des raisons de sécurité.

Vu l'ancienneté de cette préconisation, cette suppression est donc normalement plus une mesure symbolique qu'autres choses, mais je ne vais cependant pas bouder mon plaisir pour autant de la voir enfin disparaître.

Il est à noter que les directives session.bug_compat42 et session.bug_compat_warn, en rapport avec register globals, sont également devenues inutilisables.

La dernière fonctionnalité très controversée ayant disparue avec PHP 5.4 est le mode de sécurité de PHP, connu sous le nom de safe mode.

Censé protégé le développeurs de ses erreurs lors du développement en limitant le nombre de failles de sécurité possibles via la désactivation de plusieurs fonctions stratégiques dans le cadre d'une attaque et la mise en place de plusieurs limitations fonctionnelles, il donnait en fait à ses utilisateurs un faux sentiment de sécurité et en conséquence, la sécurité passait au second plan lors des développements au lieu d'être une préoccupation quotidienne.

Également annoncé comme étant déprécié depuis PHP 5.3, les développeurs de PHP 5.4 l'ont donc définitivement éradiqué avec PHP 5.4, et il n'est donc plus disponible à partir de cette version, ainsi que les directives correspondantes, à savoir :

  • safe_mode
  • safe_mode_gid
  • safe_mode_include_dir
  • safe_mode_exec_dir
  • safe_mode_allowed_env_vars
  • safe_mode_protected_env_vars

Leur utilisation générera donc également une erreur de type E_CORE_ERROR qui empêchera le démarrage de PHP.

Si la suppression des magic quotes et de register_globals ne devrait pas poser de problème, il n'en est pas de même avec le safe mode.

Ce dernier est en effet malheureusement encore utilisé, notamment chez les hébergeurs mutualistes et il camoufle donc potentiellement beaucoup de failles de sécurité qui pourront être exploitées une fois qu'une migration vers PHP 5.4 aura été effectuée.

Je recommande donc à tous ceux qui utilise le safe mode de faire un audit minutieux de l'intégralité de leur code avant de passer à PHP 5.4 s'ils ne veulent pas avoir de mauvaise surprise.

Dans un autre registre, les directives allow_call_time_pass_reference et zend.ze1_compatibility_mode qui permettait de rendre compatible du code écrit en PHP 4 avec PHP 5 à moindre frais ont été supprimées.

Par conséquent, il sera donc dorénavant obligatoire de modifier du code écrit en PHP 4 pour le faire fonctionner avec les versions du langage supérieure ou égale à 5.4.

La directive de configuration y2k_compliance, permettant d'augmenter la compatibilité du langage avec certains navigateurs supportant mal le passage à l'an 2000, a également été supprimée, car elle n'a plus de sens aujourd'hui.

Enfin,plus anecdotiques, les directives highlight.bg relative à la coloration syntaxique et define_syslog_variables, dépréciée depuis PHP 5.3, ne sont également plus utilisables.

Et pour en terminer avec ce sujet, les directives annoncées comme étant dépréciées seront à l'avenir signalée par PHP avec une erreur de type E_CORE_WARNING au lieu de E_WARNING.