Developpez.com - Rubrique PHP

Le Club des Développeurs et IT Pro

PHP 5.3.4 et PHP 5.2.16 nouvelles versions de PHP

Se concentrent sur la sécurité et la stabilité

Le 2010-12-16 18:32:41, par Celira, Modératrice
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.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
  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.
  • 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
    Quelqu'un sait il quand va arriver PHP 5.3 en stable dans Debian via les paquets ?
    Ou combien de temps ça prend en moyenne. ça fait déjà un bn moment que php 5.3 est arrivé et il n'est toujours pas la :/
  • kdmbella
    Expert éminent
    Envoyé par Code62
    La version 5.3.8 vient d'être publiée: elle ne fait que corriger deux bugs qui avaient été introduits dans la 5.3.7 (source)

    "et nous avons fait tourner les tests", assure Pierre Joye (le bug de la fonction crypt() était du à une modif de dernière minute effectuée par Rasmus, sans repasser ensuite par le processus de test)
    bon a savoir mais faut plus court-circuiter l'étape de test ça peut causé des dégâts encore plus importants mais bon une faute avouée est à moitié pardonée
  • Celira
    Modératrice
    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.
  • stealth35
    Expert éminent sénior
    Après la mise en ligne de nouvelle branche 5.4, voici la première alpha

    au menu :

    http://svn.php.net/repository/php/ph...4_0alpha1/NEWS

    PHP NEWS
    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    20 Jun 2011, PHP 5.4.0 Alpha 1
    - autoconf 2.59+ is now supported (and required) for generating the
    configure script with ./buildconf. Autoconf 2.60+ is desirable
    otherwise the configure help order may be incorrect. (Rasmus, Chris Jones)

    - Removed legacy features:
    . break/continue $var syntax. (Dmitry)
    . Safe mode and all related ini options. (Kalle)
    . register_globals and register_long_arrays ini options. (Kalle)
    . import_request_variables(). (Kalle)
    . allow_call_time_pass_reference. (Pierrick)
    . define_syslog_variables ini option and its associated function. (Kalle)
    . highlight.bg ini option. (Kalle)
    . Session bug compatibility mode (session.bug_compat42 and
    session.bug_compat_warn ini options). (Kalle)
    . session_is_registered(), session_register() and session_unregister()
    functions. (Kalle)
    . y2k_compliance ini option. (Kalle)

    - Moved extensions to PECL: (Johannes)
    . ext/sqlite.

    - Changed $_SERVER['REQUEST_TIME'] to include microsecond precision. (Ilia)
    - Changed default value of "default_charset" php.ini option from ISO-8859-1 to
    UTF-8. (Rasmus)
    - Changed array_combine() to return empty array instead of FALSE when both
    parameter arrays are empty. FR #34857. (joel.perras@gmail.com)
    - Changed third parameter of preg_match_all() to optional. FR #53238. (Adam)
    - Changed silent casting of null/''/false into an Object when adding
    a property into a warning. (Scott)
    - <?= is now always available regardless of the short_tags setting (Rasmus)

    - General improvements:
    . Added multibyte support by default. Previously php had to be compiled
    with --enable-zend-multibyte. Now it can be enabled or disabled through
    zend.multibyte directive in php.ini. (Dmitry)
    . Removed compile time dependency from ext/mbstring (Dmitry)
    . Added support for Traits. (Stefan)
    . Added closure $this support back. (Stas)
    . Added array dereferencing support. (Felipe)
    . Added indirect method call through array. FR #47160. (Felipe)
    . Added support for object references in recursive serialize() calls.
    FR #36424. (Mike)
    . Added http_response_code() function. FR #52555. (Paul Dragoonis, Kalle)
    . Added header_register_callback() which is invoked immediately
    prior to the sending of headers and after default headers have
    been added. (Scott)
    . Added DTrace support. (David Soria Parra)
    . Improved output layer, see README.NEW-OUTPUT-API for internals. (Mike)
    . Improved unserialize() performance.
    (galaxy dot mipt at gmail dot com, Kalle)
    . Improved unix build system to allow building multiple PHP binary SAPIs and
    one SAPI module the same time. FR #53271, FR #52410. (Jani)
    . Added optional argument to debug_backtrace() and debug_print_backtrace()
    to limit the amount of stack frames returned. (Sebastian, Patrick)
    . Added stream metadata API support and stream_metadata() stream class
    handler. (Stas)

    - Improved Zend Engine memory usage: (Dmitry)
    . Replaced zend_function.pass_rest_by_reference by
    ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags.
    . Replaced zend_function.return_reference by ZEND_ACC_RETURN_REFERENCE
    in zend_function.fn_flags.
    . Removed zend_arg_info.required_num_args as it was only needed for internal
    functions. Now the first arg_info for internal functions (which has special
    meaning) is represented by zend_internal_function_info structure.
    . Moved zend_op_array.size, size_var, size_literal, current_brk_cont,
    backpatch_count into CG(context) as they are used only during compilation.
    . Moved zend_op_array.start_op into EG(start_op) as it's used only for
    'interactive' execution of single top-level op-array.
    . Replaced zend_op_array.done_pass_two by ZEND_ACC_DONE_PASS_TWO in
    zend_op_array.fn_flags.
    . op_array.vars array is trimmed (reallocated) during pass_two.
    . Replaced zend_class_entry.constants_updated by ZEND_ACC_CONSTANTS_UPDATED
    in zend_class_entry.ce_flags.
    . Reduced the size of zend_class_entry by sharing the same memory space
    by different information for internal and user classes.
    See zend_class_entry.info union.
    . Reduced size of temp_variable.

    - Changed the structure of op_array.opcodes. The constant values are moved from
    opcode operands into a separate literal table. (Dmitry)

    - Improved Zend Engine, performance tweaks and optimizations: (Dmitry)
    . Inlined most probable code-paths for arithmetic operations directly into
    executor.
    . Eliminated unnecessary iterations during request startup/shutdown.
    . Changed $GLOBALS into a JIT autoglobal, so it's initialized only if used.
    (this may affect opcode caches!)
    . Improved performance of @ (silence) operator.
    . Simplified string offset reading. $str[1][0] is now a legal construct.
    . Added caches to eliminate repeatable run-time bindings of functions,
    classes, constants, methods and properties.
    . Added concept of interned strings. All strings constants known at compile
    time are allocated in a single copy and never changed.
    . Added an optimization which saves memory and emalloc/efree calls for empty
    HashTables. (Stas, Dmitry)
    . ZEND_RECV now always has IS_CV as its result.
    . ZEND_CATCH now has to be used only with constant class names.
    . ZEND_FETCH_DIM_? may fetch array and dimension operands in different order.
    . Simplified ZEND_FETCH_*_R operations. They can't be used with the
    EXT_TYPE_UNUSED flag any more. This is a very rare and useless case.
    ZEND_FREE might be required after them instead.
    . Split ZEND_RETURN into two new instructions ZEND_RETURN and
    ZEND_RETURN_BY_REF.
    . Optimized access to global constants using values with pre-calculated
    hash_values from the literals table.
    . Optimized access to static properties using executor specialization.
    A constant class name may be used as a direct operand of ZEND_FETCH_*
    instruction without previous ZEND_FETCH_CLASS.
    . zend_stack and zend_ptr_stack allocation is delayed until actual usage.

    - Improved CLI SAPI: (Johannes)
    . Added command line option --rz <name> which shows information of the
    named Zend extension.
    . Interactive readline shell improvements:
    . Added "cli.pager" php.ini setting to set a pager for output.
    . Added "cli.prompt" php.ini setting to configure the shell prompt.
    . Added shortcut #inisetting=value to change ini settings at run-time.
    . Changed shell not to terminate on fatal errors.
    . Interactive shell works with shared readline extension. FR #53878.

    - Improved FastCGI SAPI: (Dmitry)
    . Added apache compatible functions: apache_child_terminate(),
    getallheaders(), apache_request_headers() and apache_response_headers()
    . Improved performance of FastCGI request parsing.

    - Improved core functions:
    . number_format() no longer truncates multibyte decimal points and thousand
    separators to the first byte. FR #53457. (Adam)
    . Added hex2bin() function. (Scott)

    - Improved CURL extension:
    . Added support for CURLOPT_MAX_RECV_SPEED_LARGE and
    CURLOPT_MAX_SEND_SPEED_LARGE. FR #51815. (Pierrick)

    - Improved Date extension:
    . Added the + modifier to parseFromFormat to allow trailing text in the
    string to parse without throwing an error. (Stas, Derick)

    - Improved DBA extension:
    . Added Tokyo Cabinet abstract DB support. (Michael Maclean)
    . Added Berkeley DB 5 support. (Johannes, Chris Jones)

    - Improved filesystem functions:
    . scandir() now accepts SCANDIR_SORT_NONE as a possible sorting_order value.
    FR #53407. (Adam)

    - Improved HASH extension:
    . Added Jenkins's one-at-a-time hash support. (Martin Jansen)
    . Added FNV-1 hash support. (Michael Maclean)
    . Made Adler32 algorithm faster. FR #53213. (zavasek at yandex dot ru)

    - Improved intl extension:
    . Added Spoofchecker, allows checking for visibly confusable characters and
    other security issues. (Scott)

    - Improved JSON extension:
    . Added JsonSerializable interface. (Sara)
    . Added JSON_BIGINT_AS_STRING, extended json_decode() sig with $options.
    (Sara)
    . Added support for JSON_NUMERIC_CHECK option in json_encode() that converts
    numeric strings to integers. (Ilia)
    . Added new json_encode() option JSON_PRETTY_PRINT. FR #44331. (Adam)
    . Added new json_encode() option JSON_UNESCAPED_SLASHES. FR #49366. (Adam)

    - Improved LDAP extension:
    . Added paged results support. FR #42060. (ando@OpenLDAP.org,
    iarenuno@eteo.mondragon.edu, jeanseb@au-fil-du.net, remy.saissy@gmail.com)

    - Improved MySQL extensions:
    . MySQL: Deprecated mysql_list_dbs(). FR #50667. (Andrey)
    . mysqlnd: Added named pipes support. FR #48082. (Andrey)
    . MySQLi: Added iterator support in MySQLi. mysqli_result implements
    Traversable. (Andrey, Johannes)
    . PDO_mysql: Removed support for linking with MySQL client libraries older
    than 4.1. (Johannes)

    - Improved OpenSSL extension:
    . Added AES support. FR #48632. (yonas dot y at gmail dot com, Pierre)
    . Added a "no_ticket" SSL context option to disable the SessionTicket TLS
    extension. FR #53447. (Adam)
    . Added no padding option to openssl_encrypt()/openssl_decrypt(). (Scott)

    - Improved PDO DB-LIB: (Stanley)
    . Added nextRowset support.
    . Fixed bug #50755 (PDO DBLIB Fails with OOM).

    - Improved PostgreSQL extension:
    . Added support for "extra" parameter for PGNotify().
    (r dot i dot k at free dot fr, Ilia)

    - Improved Reflection extension: (Johannes)
    . Added ReflectionExtension::isTemporary() and
    ReflectionExtension::isPersistent() methods.
    . Added ReflectionZendExtension class.
    . Added ReflectionClass::isCloneable(). (Felipe)

    - Improved Session extension:
    . Added support for storing upload progress feedback in session data. (Arnaud)
    . Changed session.entropy_file to default to /dev/urandom or /dev/arandom if
    either is present at compile time. (Rasmus)

    - Improved SPL extension:
    . Added RegexIterator::getRegex() method. (Joshua Thijssen)
    . Added SplObjectStorage::getHash() hook. (Etienne)
    . Added SplFileInfo::getExtension(). FR #48767. (Peter Cowburn)
    . Added CallbackFilterIterator and RecursiveCallbackFilterIterator. (Arnaud)

    - Improved ZLIB extension:
    . Re-implemented non-file related functionality. (Mike)

    - Improved SNMP extension (Boris Lytochkin):
    . Added OO API. FR #53594 (php-snmp rewrite).
    . Sanitized return values of existing functions. Now it returns FALSE on
    failure.
    . Allow ~infinite OIDs in GET/GETNEXT/SET queries. Autochunk them to max_oids
    upon request.
    . Introducing unit tests for extension with ~full coverage.
    . Fixed bugs
    . #44193 (snmp v3 noAuthNoPriv doesn't work)
    . #45893 (Snmp buffer limited to 2048 char)
    . #46065 (snmp_set_quick_print() persists between requests)
    . #51336 (snmprealwalk (snmp v1) does not handle end of OID tree correctly)
    . #53862 (snmp_set_oid_output_format does not allow returning to default)
  • stealth35
    Expert éminent sénior
    Nouveau site en cours pour php.net :

    http://prototype.php.net
  • Code62
    Membre éclairé
    Envoyé par stealth35
    Nouveau site en cours pour php.net :

    http://prototype.php.net
    ouais, j'ai vu ça y'a quelques jours, et j'ai pleuré

    en dehors du menu "documentation" qui fait peur quand on clique, je n'arrive pas à croire qu'ils aient remplacé le bleu historique par cet espece de mauve-rose...
  • Seb33300
    Membre émérite
    à noter également que le support de la version 5.2 de PHP n'est plus d'actualité.