Developpez.com - Rubrique PHP

Le Club des Développeurs et IT Pro

L'équipe de développement de PHP sort la version 5.3.8 pour corriger les bugs de la 5.3.7.

Le 2010-07-23 12:19:21, par Celira, Modératrice
EDIT : 19/08/2011

L'équipe de développement de PHP vient d'annoncer la sortie de la version 5.3.7.


Cette nouvelle version renforce la stabilité au langage et apporte plusieurs améliorations et corrections liés sur la sécurité avec plus de 90 correctifs dont
- la correction liée à une vulnérabilité (bugs #54939) de la superglobale $_FILE['filename'] pouvant être victime d'une injection,
- l'ajout d'une nouvelle constate PHP_MANDIR indiquant l'emplacement des manpages windows
- L'ajout d'un troisième argument pour les fonctions filter_var_array() et filter_input_array() permettant la désactivation des de l'addition éléments vides
- Les versions embarqués des bibliothèques sqlite3 et PCRE et ont été mis à niveau sur les versions 3.7.7.1 et 8.12 respectivement
- et plein d'autres qui vous pouvez trouver dans le changelog.

Les utilisateurs Windows devront se rappeler que les binaires VC6 n'étant plus disponible, ils devront recourir aux exécutables Apache fournis par Apache Lounge pour utiliser le SAPI Apache.

_________________________________________________________________

EDIT : 19/03/2011
Nouvelle version de PHP 5.3.6 et l'abandon du support de la branche 5.2

Depuis ce Jeudi, l'équipe de développement de PHP a annoncé la sortie de la version 5.3.6.

Cette version apporte plus de 60 correctifs et certains ajouts dont :

  • Correction d'une vulnérabilité dans les archives PHP aka Phar
  • un overflow sur les entiers avec la fonction shmop_read
  • Correction d'un crash sur certains tags EXIF
  • Correction d'un défaut de segment sur les archives vides avec ZipArchive
  • Correction des fonctions isset et empty qui produisaient des erreurs d'exécution non fondés
  • Correction d'une régression introduite dans la version 5.3.4 dans la fonction open_basedir
  • Mise à jour de Sqlite 3 vers la version 3.7.4
  • Mise à jour de la librairie PCRE vers la version 8.11
  • Ajout de la possibilité de connexion au protocole HTTPS via proxy avec une authentification basique en utilisant stream_context et l'entête HTTP Proxy-Authorization
  • Ajout des options supplémentaires à la fonction debug_backtrace


Tous les changements pour cette version sont disponibles dans le changelog.

Cependant cette sortie annonce également l'abandon du support de la branche 5.2, les utilisateurs de windows devront se contenter des exécutables compilés avec Visual C++ 9 car l'équipe de développement a mit fin avec la compilation des binaires sous VC 6.

_________________________________________________________________

EDIT : 07/01/2010
Nouvelles versions de PHP : 5.3.5 et 5.2.17
Suite à la découverte d'un bug majeur permettant les attaques par Déni de Service, PHP vient de sortir une version corrigeant ce bug. Tous les utilisateurs sont vivement invités à migrer leurs serveurs PHP vers ces nouvelles versions. Pour tester si votre système est sensible à ce bug, PHP.net propose le script de test suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
/*
  +----------------------------------------------------------------------+
  | PHP Version 5                                                        |
  +----------------------------------------------------------------------+
  | Copyright (c) 2011 The PHP Group                                     |
  +----------------------------------------------------------------------+
  | This source file is subject to version 3.01 of the PHP license,      |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.php.net/license/3_01.txt                                  |
  | If you did not receive a copy of the PHP license and are unable to   |
  | obtain it through the world-wide-web, please send a note to          |
  | license@php.net so we can mail you a copy immediately.               |
  +----------------------------------------------------------------------+
  | Author: Johannes Schlueter <johannes@php.net>                        |
  +----------------------------------------------------------------------+
*/

if (PHP_SAPI != 'cli') {
    die("Please run this test from CLI!\n");
}

ini_set('display_errors', 1);
ini_set('output_buffering', 0);
error_reporting(-1);
if (!ini_get('safe_mode')) {
    set_time_limit(1);
}

echo "Testing float behaviour. If this script hangs or terminates with an error ".
     "message due to maximum execution time limit being reached, you should ".
     "update your PHP installation asap!\n";
echo "For more information refer to <http://bugs.php.net/53632>.\n";
$d = (double)"2.2250738585072011e-308";
echo "Your system seems to be safe.\n";
?>
Le principe est simple : si le script s'exécute jusqu'à la fin, votre système est protégé. Il est évidemment recommandé de fermer toutes les applications critiques avant de lancer ce script, histoire d'éviter de tout faire planter si il s'avère que votre système est sensible au bug.

On notera au passage que, bien que le support de PHP 5.2 soit théoriquement théoriquement, une version de correction est également disponible pour PHP 5.2 pour des raisons sécuritaires.

_____________________________________________________________
EDIT du 16/12/2010
Nouvelle version de PHP 5.2 : 5.2.16
Moins d'une semaine après la sortie de PHP 5.2.15, sortie d'une nouvelle version de PHP 5.2.
Le but de cette version est essentiellement de corriger une régression sur la fonction open_basedir, introduite dans la version 5.2.15, ainsi qu'une correction sur PDO::pgsql.

Celles et ceux qui ont déjà migrés leur serveur vers 5.2.15 et qui utilisent la fonction open_basedir sont très fortement encouragés à mettre en place la nouvelle version 5.2.16 (ou bien sûr à passer à PHP 5.3, étant donné que le support de PHP 5.2 est terminé)

Nouvelle version de PHP 5.3 : 5.3.4
Cette version est une version de maintenance et corrige un nombre important de bugs. Notamment :
  • Correction de crash sur l'extraction de zip
  • Correction du comportement de la fonction extract avec l'option EXTR_OVERWRITE
  • Correction d'une faille dans la fonction open_basedir
  • Ajout d'un 3e paramètre à la fonction get_html_translation_table, pour le choix de l'encodage

La liste complète des changements dans la version 5.3.4

Nouvelle version de PHP 5.2 : PHP 5.2.15
Comme indiqué lors de la précédente version, cette version se concentre sur la correction de bugs de sécurité et la stabilité/ Notamment :
  • Correction de crash sur l'extraction de zip
  • Correction du comportement de la fonction extract avec l'option EXTR_OVERWRITE
  • Correction d'une faille dans la fonction open_basedir
  • Correction de la fonction array_diff (l'exécution était 3000 fois plus lente que dans PHP 5.2.4)

La liste complète des changements dans cette version
Cette version est la dernière version de PHP 5.2, le support de maintenance étant maintenant terminé. Les utilisateurs de PHP 5.2 sont vivement encouragés à migrer vers PHP 5.3. (guide de migration disponible sur PHP.net )

____________________________________________
Nouvelle Version de PHP 5.2 : PHP 5.2.14
Cette version met l'accent sur la stabilité et la sécurité, en corrigeant plus de 60bugs. Notamment :
  • Réécriture de var_export, pour empêcher une possible divulgation de données en cas d'erreur
  • Correction d'une possible corruption de mémoire dans substr_replace
  • Correction de possibles pertes de données dans les fonctions strchr(), strstr(), substr(), chunk_split(), strtok(), addcslashes(), str_repeat(), trim().
  • Serialisation de variables de session
  • Mise à jour de la bibliothèque PCRE
  • Mise à jour des données de fuseaux horaires (timezone)

La liste complète des modifications de PHP 5.2.14

Cette version est la dernière version supportée pour PHP 5.2. La maintenance active de bugs ne sera plus assurée, seuls des patches de sécurité seront éventuellement appliqués au cas par cas.
Les utilisateurs de PHP sont vivement encouragés à passer à PHP 5.3. Pour cela PHP.net met à disposition un guide de migration

Nouvelle version de PHP 5.3 : PHP 5.3.3
Cette version corrige plus de 100 bugs, dont certains liés à la sécurité. Notamment :
  • Réécriture de var_export, pour empêcher une possible divulgation de données en cas d'erreur
  • Correction de possibles corruptions de mémoire sur un certain nombre de fonction, dont parse_str, substr_replace, addcslashes, ArrayObjet::uasort
  • Correction sur la sérialisation de variables de session
  • Mise à jour de la bibliothèque sqlite
  • Mise à jour de la bibliothèque PCRE
  • Ajout de FastCGI Process Manager (FPM) SAPI
  • Ajout d'un support de filtre de flux dans mcrypt

La liste complète des modifications de PHP 5.3.3

Attention, si vous utilisiez déjà PHP 5.3.x, dans un espace de nom, la méthode d'une classe portant le même nom que cette classe ne sera plus considérée comme constructeur.
Code :
1
2
3
4
5
6
7
8
9
<?php
namespace Foo;
class Bar {
    public function Bar() {
        // traitée comme constructeur de la classe en PHP 5.3.x < 5.3.3
        // traitée comme une méthode en PHP 5.3.3
    }
}
?>
Ce changement n'affecte pas les classes n'appartenant pas à un espace de nom, ni les migrations depuis PHP 5.2.x (les espaces de noms n'existant que depuis 5.3.0)
  Discussion forum
28 commentaires
  • Thes32
    Expert confirmé
    L'équipe de développement de PHP vient d'annoncer la sortie de la version 5.3.7.

    Cette nouvelle version renforce la stabilité au langage et apporte plusieurs améliorations et corrections liés sur la sécurité avec plus de 90 correctifs dont
    - la correction liée à une vulnérabilité (bugs #54939) de la superglobale $_FILE['filename'] pouvant être victime d'une injection,
    - l'ajout d'une nouvelle constate PHP_MANDIR indiquant l'emplacement des manpages windows
    - L'ajout d'un troisième argument pour les fonctions filter_var_array() et filter_input_array() permettant la désactivation des de l'addition éléments vides
    - Les versions embarqués des bibliothèques sqlite3 et PCRE et ont été mis à niveau sur les versions 3.7.7.1 et 8.12 respectivement
    - et plein d'autres qui vous pouvez trouver dans le changelog.

    Les utilisateurs Windows devront se rappeler que les binaires VC6 n'étant plus disponible, ils devront recourir aux exécutables Apache fournis par Apache Lounge pour utiliser le SAPI Apache.
  • Madfrix
    Membre émérite
    Bonjour,

    Envoyé par Celira

    • Correction de possibles pertes de donnés dans les fonctions strchr(), strstr(), substr(), chunk_split(), strtok(), addcslashes(), str_repeat(), trim().
    Dans quelle situation pouvait-on rencontrer des pertes de données avec ces fonctions ? Un article existe-t-il recensant ces cas de figure ?

    Merci
  • Oscar Hiboux
    Membre averti
    Ça craint un peu ça, le code va perdre en élégance je trouve. C'est assez malpropre ces symboles contenant des __...
  • Celira
    Modératrice
    Nouvelle version de PHP 5.2 : 5.2.16
    Moins d'une semaine après la sortie de PHP 5.2.15, sortie d'une nouvelle version de PHP 5.2.
    Le but de cette version est essentiellement de corriger une régression sur la fonction open_basedir, introduite dans la version 5.2.15, ainsi qu'une correction sur PDO::pgsql.

    Celles et ceux qui ont déjà migrés leur serveur vers 5.2.15 et qui utilisent la fonction open_basedir sont très fortement encouragés à mettre en place la nouvelle version 5.2.16 (ou bien sûr à passer à PHP 5.3, étant donné que le support de PHP 5.2 est terminé)
  • Celira
    Modératrice
    Lorsque tu définis ta classe en PHP 5.2+, le constructeur s'appelle __construct (on parle là de la méthode appelée lors de l'instanciation d'un objet, autrement dit un new MonObjet())
    On a bien le concept objet, avec le constructeur, les méthodes, les attributs et tout, juste le constructeur ne porte pas le nom de la classe...
  • Seb33300
    Membre émérite
    Envoyé par Celira
    Ce changement n'affecte pas les classes n'appartenant pas à un espace de nom, ni les migrations depuis PHP 5.2.x (les espaces de noms n'existant que depuis 5.3.0)
    Étrange comme décision
  • Chauve souris
    Membre expert
    qui n'était plus reconnu dans je ne sais plus quelle (dernière) version. Obligé de tout scanner pour remplacer 'localhost" par '127.0.0.1'
  • Celira
    Modératrice
    Envoyé par Madfrix
    Dans quelle situation pouvait-on rencontrer des pertes de données avec ces fonctions ? Un article existe-t-il recensant ces cas de figure ?
    De ce que j'ai cru comprendre, il s'agissait d'une faille qui provoquait la diffusion de données si on forçait l'interruption de la fonction. Le terme original est "interruption array leak", si quelqu'un a une meilleure traduction/explication, je suis preneuse.

    Envoyé par Seb33300
    Ce changement n'affecte pas les classes n'appartenant pas à un espace de nom, ni les migrations depuis PHP 5.2.x (les espaces de noms n'existant que depuis 5.3.0)
    Étrange comme décision
    On peut considérer ça comme une progression logique :
    en PHP < 5, le constructeur était la méthode nommée comme la classe.
    En PHP 5, jusqu'à 5.2, le constructeur était la méthode __construct (ou à défaut la méthode portant le nom de la classe)
    En PHP 5.3, on ajoute les espaces de noms : les classe codées sans espace de noms suivent le fonctionnement de PHP 5.2, donc on leur laisse le fonctionnement d'origine et on continue à faire évoluer les classes espace-nommées.
  • tpruvot
    Membre à l'essai
    Attention, la version 5.2.14 pose un probleme avec l'extension cURL php_curl.dll

    Le chargement de PHP est beaucoup plus lent (2 a 3secondes) en ligne de commande (et je pense aussi en CGI)

    Une solution pour corriger ca serait d'ajouter zlib.dll (v1.2.3) dans le répertoire systeme ou de PHP

    Vous pouvez tester un simple "php -v" pour vous en rendre compte...

    Le bug a été soumis (2 fois) mais fermé

    Attention : Idem avec PHP 5.3.3
  • Seb33300
    Membre émérite
    Envoyé par Celira
    On peut considérer ça comme une progression logique :
    en PHP < 5, le constructeur était la méthode nommée comme la classe.
    En PHP 5, jusqu'à 5.2, le constructeur était la méthode __construct (ou à défaut la méthode portant le nom de la classe)
    En PHP 5.3, on ajoute les espaces de noms : les classe codées sans espace de noms suivent le fonctionnement de PHP 5.2, donc on leur laisse le fonctionnement d'origine et on continue à faire évoluer les classes espace-nommées.
    Oui. Doit on envisager du coup que les prochaines versions de PHP5 obligent à utiliser __construct tout le temps ?

    Ou peut etre que PHP 6 ça sera du __construct uniquement ?