PHP 5.3 stable

Les versions de PHP5.3.x et son avancement sur :

PHP 5.3.10

PHP 5.3.9 est disponible depuis le 02/02/2012 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.10 sont disponibles dans l'annonce de la version, et la liste complète des changements est disponible dans le ChangeLog PHP 5.3.10

PHP 5.3.9

PHP 5.3.9 est disponible depuis le 10/01/2012 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.9 sont disponibles dans l'annonce de la version, et la liste complète des changements est disponible dans le ChangeLog PHP 5.3.9

PHP 5.3.8

PHP 5.3.8 est disponible depuis le 18/08/2011 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.8 sont disponibles dans l'annonce de la version, et la liste complète des changements est disponible dans le ChangeLog PHP 5.3.8

PHP 5.3.7

PHP 5.3.7 est disponible depuis le 18/08/2011 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.7 sont disponibles dans l'annonce de la version, et la liste complète des changements est disponible dans le ChangeLog PHP 5.3.7

PHP 5.3.6

PHP 5.3.6 est disponible depuis le 17/03/2011 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.6 sont disponibles dans l'annonce de la version, et la liste complète des changements est disponible dans le ChangeLog PHP 5.3.6

PHP 5.3.5

PHP 5.3.5 est disponible depuis le 06/01/2011 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.5 sont disponibles dans l'annonce de la version, et la liste complète 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

PHP 5.3.4 est disponible depuis le 10/12/2010 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.4 sont disponibles dans l'annonce de la version, et la liste complète 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

PHP 5.3.3 est disponible depuis le 22/07/2010 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.3 sont disponibles dans l'annonce de la version, et la liste complète 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

PHP 5.3.2 est disponible depuis le 04/03/2010 en "Stable Releases", plus de détails sur la sortie de PHP 5.3.2 sont disponibles dans l'annonce de la version, et la liste complète des changements est disponible dans le ChangeLog PHP 5.3.2

PHP 5.3.1

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 complète des changements est disponible dans le ChangeLog PHP 5.3.1

PHP 5.3.0

PHP 5.3 est disponible depuis le 30/06/2009 en "Stable Releases", 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 complète 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

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 !

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

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";
	}
}