PHP 5.3 changements et configuration
Par PlaceOweb le jeudi, août 14 2014, 05:30 - PHP - Lien permanent
Petit tour d'horizon des modifications sur PHP 5.3 qui anticipe la version de PHP 5.4 (car PHP6 semble abandonné) .
PHP 5.3 stable
Suppression des balises courtes <?
Les balises courtes (short open tag) sont désactivées par défaut dans les directives internes du php.ini
Donc les instructions suivantes sont désormais interdites :
<? <?=
et doivent être remplacées par
<?php <?php echo
Pour détecter vos balises courtes a remplacer, sous linux vous pouvez utiliser :
egrep -R "<\?( |=|\n|$)" /var/www/* | grep -v concorde > /tmp/check.php.short.tag grep -R -E "<\?( |=|\n|$)" /var/www/* | grep -v concorde > /tmp/check.php.short.tag
Et pour inclure la tabulation :
Essaie de taper la tabulation avec la séquence de touches suivante : "CTRL V" "TAB" Appuie sur les touches CTRL+V et ensuite sur la touche "Tabulation", puis le reste du motif.
grep -R -E "<\?( | |^M|=|\n|\t|$)" /var/www/* | grep -v concorde > /tmp/check.php.short.tag
Ou,
TAB=`echo -e '\t'` grep -R -E "<\?( |$TAB|^M|=|\n|\t|$)" /var/www/* | grep -v concorde > /tmp/check.php.short.tag
Suppression des guillemets magiques (Magic Quotes : magic_quotes)
Avertissement : Cette fonctionnalité est OBSOLETE depuis PHP 5.3.0 et a été SUPPRIMEE depuis PHP 6.0.0. Nous vous encourageons vivement à ne plus l'utiliser.
Les guillemets magiques (littéralement, les Magic Quotes) est un processus qui protège automatiquement les données introduites dans un script PHP. Il est recommandé de développer les applications sans l'aide des guillemets magiques, et de protéger manuellement les données.
- magic_quotes_gpc Affecte les données issues des requêtes HTTP (GET, POST, et COOKIE). Ne peut pas être configurée durant l'exécution, et vaut par défaut on en PHP inférieur à PHP 5.3. Voir aussi get_magic_quotes_gpc().
La directive magic_quotes_gpc ne peut être désactivée qu'au niveau du système, et non pas à l'exécution. En d'autres termes, utiliser ini_set() n'est pas possible.
Magic quotes sur Wikipedia.
Eric Couchelou explique comment désactiver les Magic Quotes en mutualisé via une fonction php
PHP Deprecated: Function set_magic_quotes_runtime() is deprecated
Warning : This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
Suppression des variables super-globales
Avertissement : Cette fonctionnalité est OBSOLETE depuis PHP 5.3.0 et a été SUPPRIMEE depuis PHP 6.0.0. Nous vous encourageons vivement à ne plus l'utiliser.
register_globals boolean
Définit si oui ou non les variables EGPCS (Environment, GET, POST, Cookie, Server) seront enregistrées comme des variables globales.
Depuis » PHP 4.2.0, la valeur par défaut de cette directive est off.
Ressources
- php.net
- Site du Zéro : PHP 5.3 : dernière étape avant PHP 6
- Les espaces de noms
- Les fermetures, ou fonctions anonymes
- Un pilote MySQL natif : MySQLnd (MySQL native driver)
- Améliorations du php.ini : Ajout de sections spécifiques à un domaine ou à un dossier local.
- Ajout de __DIR__ et __NAMESPACE__ dans les constantes magiques
- Et PHP 6 dans tout ça ?
- Support de l'Unicode
- Configurations de « sécurité » supprimées : des fonctionnalités comme register_globals et magic_quotes_gpc
- australopitech.com : Faut-il passer à PHP 5.3 ?
- php-5.3 par Pascal MARTIN
Code PHP obsolète et remplacement
Pour rechercher l'appel à des méthodes obsolètes ou en erreur depuis vos logs Apache :
[root@MonServeur ~]# tail -f /var/log/httpd/*-error_log | grep -E "(Fatal|Parse|assumed)"
Fonctions POSIX Regex : Function ereg_replace() is deprecated in
Note: À partir de PHP 5.3.0, l'extension regex est obsolète : l'appel à une de ces fonctions émettra une erreur de niveau E_DEPRECATED.
- ereg_replace — Remplacement par expression rationnelle
- ereg — Recherche par expression rationnelle standard
- eregi_replace — Remplacement par expression rationnelle insensible à la casse
- eregi — Recherche par expression rationnelle insensible à la casse
- split — Scinde une chaîne en un tableau, grâce à une expression rationnelle
- spliti — Scinde une chaîne en un tableau, grâce à une expression rationnelle
- sql_regcase — Prépare une expression rationnelle pour effectuer une recherche insensible à la casse
Ces expressions rationnelles ne sont pas compatibles avec les données binaires. Les expressions PCRE le sont.
Astuce :
- PHP supporte aussi des expressions rationnelles compatibles Perl, avec l'extension PCRE functions. Ces fonctions supportent des recherches non-gourmandes, des assertions, des sous-masques conditionnels et toute une gamme de fonctionnalités absentes des expressions rationnelles POSIX.
- preg_replace(), qui utilise la syntaxe des expressions rationnelles compatibles PERL, est une alternative plus rapide de ereg_replace().
En ressources sur les expressions rationnelles, voyez :
Construction | Classe équivalente | Construction de négation | Classe équivalente |
---|---|---|---|
\d (un chiffre) | [0-9] | \D (chiffres, non !) | [^0-9] |
\w (1 caractère de mot) | [a-zA-Z0-9] | \W (mots , non!) | [^a-zA-Z0-9] |
\s (espace) | [ \r \n \f \t] | \S (space, non !) | [^ \r \n \f \t] |
function datetime_us_2_fr($date) { // Convertir date time MySQL en date FR : 2009-07-14 19:31:59 => 14/07/2009 à 19h31 // return ereg_replace('^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$', '\\3/\\2/\\1 à \\4h\\5', $date); return preg_replace('/(\d{2,4})-(\d{1,2})-(\d{1,2}) (\d{2}):(\d{2}):(\d{2})/', '\3/\2/\1 à \4h\5', $date); } /** * Convertir date MySQL en date FR : 2011-07-14 => 14/07/2011 * @param string $date 2011-07-14 * @return string la date convertie 14/07/2011 */ function date_us_2_fr($date) { // Convertir date MySQL en date FR : 2009-07-14 => 14/07/2009 // return ereg_replace('^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$', '\\3/\\2/\\1', $date); return preg_replace('/(\d{2,4})-(\d{1,2})-(\d{1,2})/', '\3/\2/\1', $date); } /** * Convertir date FR en date MySQL : 14/07/2011 => 2011-07-14 * @param string $date 14/07/2011 * @return string la date convertie 2011-07-14 */ function date_fr_2_us($date) { // Convertir date FR en date MySQL : 14/07/2011 => 2011-07-14 // return ereg_replace('^([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,4})$', '\\3-\\2-\\1', $date); return preg_replace('/(\d{1,2})\/(\d{1,2})\/(\d{1,4})/', '\3-\2-\1', $date); } $in = 'Le 1 texte 23 dans 456 lequel on ne veut garder que les chiffres.'; echo $in; echo ereg_replace('[^0-9]','',$in)."\n";; echo preg_replace('(\D)','',$in)."\n"; function enleve_blanc($string) { // $string = eregi_replace(' +', ' ', $string); //enlève les multi espaces // $string = eregi_replace('^[ ]+', '', $string); //enlève les espace au début // $string = eregi_replace('[ ]+$', '', $string); //enlève les espace a la fin // return $string; $string = preg_replace('(\s{2,})', ' ', $string); //enlève les multi espaces // $string = preg_replace('(\s+)', ' ', $string); //enlève les multi espaces ( {0,} {1,} {0,1} correspondent à * , + , ? ) return trim($string); } function commencePar($pattern, $in) { // $pattern = "^Mon début de texte"; // if( ereg($pattern,$in) ) { $pattern = "/^Mon début de texte/"; if( preg_match($pattern,$in) ) { echo "Trouvé"; }else{ echo "Non Trouvé"; } } function testCodePostal($in) { // $pattern = "^[0-9]{5}$"; $pattern = "/^(\d{5})$/"; if( preg_match($pattern,$in) ) { echo "Code Postal correct"; }else{ echo "Code Postal incorrect"; } }
Les versions
Les versions de PHP5.3.x et son avancement sur :
- PHP 5.3.29 est disponible depuis le 14/08/2014, voyez la liste complète des changements de PHP 5.3.29 NOTE : Fin de vie de la série PHP 5.3. (end of life)
- PHP 5.3.28 est disponible depuis le 12/12/2013, voyez la liste complète des changements de PHP 5.3.28
- PHP 5.3.27 est disponible depuis le 11/07/2013, voyez la liste complète des changements de PHP 5.3.27 NOTE : Ce sera la dernière version régulière de la série PHP 5.3. Tous les utilisateurs de PHP sont encouragés à passer à PHP 5.4 ou PHP 5.5. La série PHP 5.3 ne recevra que des correctifs de sécurité pour l'année prochaine.
- PHP 5.3.26 est disponible depuis le 06/06/2013, voyez la liste complète des changements de PHP 5.3.26
- PHP 5.3.25 est disponible depuis le 09/05/2013, voyez la liste complète des changements de PHP 5.3.25
- PHP 5.3.24 est disponible depuis le 11/04/2013, voyez la liste complète des changements de PHP 5.3.24
- PHP 5.3.23 est disponible depuis le 14/03/2013, voyez la liste complète des changements de PHP 5.3.23
- PHP 5.3.22 est disponible depuis le 21/02/2013, voyez la liste complète des changements de PHP 5.3.22
- PHP 5.3.21 est disponible depuis le 17/01/2013, voyez la liste complète des changements de PHP 5.3.21
- PHP 5.3.20 est disponible depuis le 20/12/2012, voyez la liste complète des changements de PHP 5.3.20
- PHP 5.3.19 est disponible depuis le 22/11/2012, voyez la liste complète des changements de PHP 5.3.19
- PHP 5.3.18 est disponible depuis le 18/10/2012, voyez la liste complète des changements de PHP 5.3.18
- PHP 5.3.17 est disponible depuis le 13/09/2012, voyez la liste complète des changements de PHP 5.3.17
- PHP 5.3.15 est disponible depuis le 16/08/2012, voyez la liste complète des changements de PHP 5.3.16
- PHP 5.3.15 est disponible depuis le 19/07/2012, voyez la liste complète des changements de PHP 5.3.15
- PHP 5.3.14 est disponible depuis le 14/06/2012, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.14
- PHP 5.3.13 est disponible depuis le 08/05/2012, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.13
- PHP 5.3.12 est disponible depuis le 03/05/2012, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.12
- PHP 5.3.11 est disponible depuis le 23/04/2012, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.11
- PHP 5.3.10 est disponible depuis le 02/02/2012, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.10
- PHP 5.3.9 est disponible depuis le 10/01/2012, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.9
- PHP 5.3.8 est disponible depuis le 18/08/2011, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.8
- PHP 5.3.7 est disponible depuis le 18/08/2011, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.7
- PHP 5.3.6 est disponible depuis le 17/03/2011, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.6
- PHP 5.3.5 est disponible depuis le 06/01/2011, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.5 Cette nouvelle version corrige une faille suite au beug : PHP bloque sur la valeur numérique 2.2250738585072011e-308
- PHP 5.3.4 est disponible depuis le 10/12/2010, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.4 Cette nouvelle version inclut comme d'habitude des améliorations de la sécurité (Security Enhancements) et des corrections majeures de beugs (Key Bug Fixes)
- PHP 5.3.3 est disponible depuis le 22/07/2010, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.3 Entre autre, il inclus le FastCGI Process Manager (FPM) SAPI
- PHP 5.3.2 est disponible depuis le 04/03/2010, l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.2
- PHP 5.3.1 est disponible depuis le 19/11/2009 en "Stable Releases", voyez la RoadMap de PHP 5.3.1 et le Plan de route de PHP 6.0 Plus de détails sur la sortie de PHP 5.3.1 sont disponibles dans l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.1
- PHP 5.3 est disponible depuis le 30/06/2009, voyez la RoadMap de PHP 5.3 Plus de détails sur la sortie de PHP 5.3.0 sont disponibles dans l'annonce de la version, et la liste des changements est disponible dans le ChangeLog PHP 5.3.0 Également, le guide de migration de PHP 5.2 vers PHP 5.3. Et celui de developpez.com : Faciliter la migration vers PHP 5.3
Télécharger PHP 5.3.1 pour éviter du DoS sur l'upload de fichiers
Attention, les versions antérieures à PHP 5.3.1 sont susceptibles de se faire attaquer de deny de service (attaque par saturation) par des scripts mals veillants qui utilisent la faille d'upload (envoi de fichiers). Il est vivement recommandé de mettre a jour son serveur !
- PHP 5.3.x - Complete Source Code
- PHP 5.3.x - Windows Binaries and sources Releases
- PHP 5.3 pour Debian et les paquets PHP 5.3.1 pour Debian “Lenny”
- Les RPM de la version finale de PHP 5.3.1 sont disponibles pour Fedora et pour Enterprise Linux (RHEL/CentOS) dans le dépôt remi
Commentaires
Je trouve dommage que php n'assure pas l'utilisation des fonctions qui deviennent obsolètes. Du fait qu'on peut obtenir le même résultat avec les preg qu'avec les postits, une interface n'aurait pas été trop dur à faire.
comment remplacer:
split("[^[:digit:]]",....?