Home » Releases » 5.2 » 5.2.17 »

PHP 5.2.1

PHP 5.2 is no longer officially supported by the PHP project.

Official support refers to that provided direct by the PHP Project.

If you install PHP via third-party packages, support timelines may be different. Please read the Release Support Policy for more information.

The latest release of PHP 5.2 is 5.2.17.

Source Code

Change Log

  • misc

    • Added read-timeout context option "timeout" for HTTP streams. (Hannes, Ilia).
    • Added CURLOPT_TCP_NODELAY constant to Curl extension.
      Sara
    • Added support for hex numbers of any size.
      Matt
    • Added function stream_socket_shutdown(). It is a wrapper for system shutdown() function, that shut downs part of a full-duplex connection.
      Dmitry
    • Added internal heap protection (Dmitry)
    • memory-limit is always enabled (--enable-memory-limit removed)
    • default value if memory-limit is set to 128M
    • safe unlinking
    • cookies
    • canary protection (debug build only)
    • random generation of cookies and canaries
    • Added forward support for 'b' prefix in front of string literals.
      Andrei
    • Added three new functions to ext/xmlwriter (Rob, Ilia)
    • xmlwriter_start_dtd_entity()
    • xmlwriter_end_dtd_entity()
    • xmlwriter_write_dtd_entity()
    • Added a meta tag to phpinfo() output to prevent search engines from indexing the page.
      Ilia
    • Added new function, sys_get_temp_dir().
      Hartmut
    • Added missing object support to file_put_contents().
      Ilia
    • Added support for md2, ripemd256 and ripemd320 algos to hash().
      Sara
    • Added forward support for (binary) cast.
      Derick
    • Added optimization for imageline with horizontal and vertical lines (Pierre)
    • Removed dependency from SHELL32.DLL.
      Dmitry
    • Removed double "wrong parameter count" warnings in various functions.
      Hannes
  • moved extensions to pecl

    • ext/informix (Derick, Tony)
    • Changed double-to-string utilities to use BSD implementation.
      Dmitry
      Tony
    • Updated bundled libcURL to version 7.16.0 in the Windows distro.
      Edin
    • Updated timezone database to version 2006.16.
      Derick
    • cgi.* and fastcgi.* directives are moved to INI subsystem. The new directive cgi.check_shebang_line can be used to omitting check for "#! /usr/bin/php" line. (Dmitry).
    • Improved proc_open(). Now on Windows it can run external commands not through CMD.EXE.
      Dmitry
    • VCWD_REALPATH() is improved to use realpath cache without VIRTUAL_DIR.
      Dmitry
    • ext/bcmath initialization code is moved from request startup to module startup.
      Dmitry
    • Zend Memory Manager Improvements (Dmitry)
    • use HeapAlloc() instead of VirtualAlloc()
    • use "win32" storage manager (instead of "malloc") on Windows by default
    • Zip Extension Improvements (Pierre)
    • Fixed leak in statName and stateIndex
    • Fixed return setComment (Hannes)
    • Added addEmptyDir method
    • Filter Extension Improvements (Ilia, Pierre)
    • Fixed a bug when callback function returns a non-modified value.
    • Added filter support for $_SERVER in cgi/apache2 sapis.
    • Make sure PHP_SELF is filtered in Apache 1 sapi.
    • Fixed bug #39358 (INSTALL_HEADERS contains incorrect reference to php_filter.h).
    • Added "default" option that allows a default value to be set for an invalid or missing value.
    • Invalid filters fails instead of returning unsafe value
    • Fixed possible double encoding problem with sanitizing filters
    • Make use of space-strict strip_tags() function
    • Fixed whitespace trimming
    • Added support for FastCGI environment variables.
      Dmitry
    • PDO_MySQL Extension Improvements (Ilia)
    • Enabled buffered queries by default.
    • Enabled prepared statement emulation by default.
    • Small optimization of the date() function.
      Matt
      Ilia
    • Optimized the internal is_numeric_string() function.
      Matt
      Ilia
    • Optimized array functions utilizing php_splice().
      Ilia
    • Windows related optimizations (Dmitry, Stas)
    • COM initialization/deinitialization are done only if necessary
    • removed unnecessary checks for ISREG file and corresponding stat() calls
    • opendir() is reimplementation using GetFistFile/GetNextFile those are faster then _findfirst/_findnext
    • implemented registry cache that prevent registry lookup on each request. In case of modification of corresponding registry-tree PHP will reload it automatic
    • start timeout thread only if necessary
    • stat() is reimplementation using GetFileAttributesEx(). The new implementation is faster then implementation in MS VC CRT, but it doesn't support Windows 95.
    • Streams optimization (Dmitry)
    • removed unnecessary ftell() calls (one call for each included PHP file)
    • disabled calls to read() after EOF
    • Fixed incorrect function names on FreeBSD where inet_pton() was named __inet_pton() and inet_ntop() was named __inet_ntop().
      Hannes
    • Fixed FastCGI impersonation for persistent connections on Windows.
      Dmitry
    • Fixed wrong signature initialization in imagepng (Takeshi Abe)
    • Fixed ftruncate() with negative size on FreeBSD.
      Hannes
    • Fixed segfault in RegexIterator when given invalid regex.
      Hannes
    • Fixed segfault in SplFileObject->openFile()->getPathname().
      Hannes
    • Fixed segfault in ZTS mode when OCI8 statements containing sub-statements are destroyed in wrong order.
      Tony
    • Fixed the validate email filter so that the letter "v" can also be used in the user part of the email address.
      Derick
    • Fixed bug #40297 (compile failure in ZTS mode when collections support is missing).
      Tony
    • Fixed bug #40285 (The PDO prepare parser goes into an infinite loop in some instances).
      Ilia
    • Fixed bug #40274 (Sessions fail with numeric root keys).
      Ilia
    • Fixed bug #40259 (ob_start call many times - memory error).
      Dmitry
    • Fixed bug #40231 (file_exists incorrectly reports false).
      Dmitry
    • Fixed bug #40228 (ZipArchive::extractTo does create empty directories recursively).
      Pierre
    • Fixed bug #40200 (The FastCgi version has different realpath results than thread safe version).
      Dmitry
    • Fixed bug #40191 (use of array_unique() with objects triggers segfault).
      Tony
    • Fixed bug #40189 (possible endless loop in zlib.inflate stream filter).
      Greg
      Tony
    • Fixed bug #40169 (CURLOPT_TCP_NODELAY only available in curl >= 7.11.2).
      Tony
    • Fixed bug #40129 (iconv extension doesn't compile with CodeWarrior on Netware).
      gk at gknw dot de
      Tony
    • Fixed bug #40127 (apache2handler doesn't compile on Netware).
      gk at gknw dot de
    • Fixed bug #40121 (PDO_DBLIB driver wont free statements).
      Ilia
    • Fixed bug #40098 (php_fopen_primary_script() not thread safe).
      Ilia
    • Fixed bug #40092 (chroot() doesn't clear realpath cache).
      Dmitry
    • Fixed bug #40091 (spl_autoload_register with 2 instances of the same class).
      Ilia
    • Fixed bug #40083 (milter SAPI functions always return false/null).
      Tony
    • Fixed bug #40079 (php_get_current_user() not thread safe).
      Ilia
      wharmby at uk dot ibm dot com
    • Fixed bug #40078 (ORA-01405 when fetching NULL values using oci_bind_array_by_name()).
      Tony
    • Fixed bug #40076 (zend_alloc.c: Value of enumeration constant must be in range of signed integer).
      Dmitry
    • Fixed bug #40073 (exif_read_data dies on certain images).
      Tony
      Marcus
    • Fixed bug #40036 (empty() does not work correctly with ArrayObject when using ARRAY_AS_PROPS).
      Ilia
    • Fixed bug #40012 (php_date.c doesn't compile on Netware).
      gk at gknw dot de
      Derick
    • Fixed bug #40009 (http_build_query(array()) returns NULL).
      Ilia
    • Fixed bug #40002 (Try/Catch performs poorly).
      Dmitry
    • Fixed bug #39993 (tr_TR.UTF-8 locale has problems with PHP).
      Ilia
    • Fixed bug #39990 (Cannot "foreach" over overloaded properties).
      Dmitry
    • Fixed bug #39988 (type argument of oci_define_by_name() is ignored).
      Chris Jones
      Tony
    • Fixed bug #39984 (redirect response code in header() could be ignored in CGI sapi).
      Ilia
    • Fixed bug #39979 (PGSQL_CONNECT_FORCE_NEW will causes next connect to establish a new connection).
      Ilia
    • Fixed bug #39971 (pg_insert/pg_update do not allow now() to be used for timestamp fields).
      Ilia
    • Fixed bug #39969 (ini setting short_open_tag has no effect when using --enable-maintainer-zts).
      Dmitry
    • Fixed bug #39952 (zip ignoring --with-libdir on zlib checks) (judas dot iscariote at gmail dot com)
    • Fixed bug #39944 (References broken).
      Dmitry
    • Fixed bug #39935 (Extensions tidy,mcrypt,mhash,pdo_sqlite ignores --with-libdir).
      judas dot iscariote at gmail dot com
      Derick
    • Fixed bug #39903 (Notice message when executing __halt_compiler() more than once).
      Tony
    • Fixed bug #39898 (FILTER_VALIDATE_URL validates \r\n\t etc).
      Ilia
    • Fixed bug #39890 (using autoconf 2.6x and --with-layout=GNU breaks PEAR install path).
      Tony
    • Fixed bug #39884 (ReflectionParameter::getClass() throws exception for type hint self).
      thekid at php dot net
    • Fixed bug #39878 (CURL doesn't compile on Sun Studio Pro).
      Ilia
    • Fixed bug #39873 (number_format() breaks with locale & decimal points).
      Ilia
    • Fixed bug #39869 (safe_read does not initialize errno).
      michiel at boland dot org
      Dmitry
    • Fixed bug #39850 (SplFileObject throws contradictory/wrong error messages when trying to open "php://wrong").
      Tony
    • Fixed bug #39846 (Invalid IPv4 treated as valid).
      Ilia
    • Fixed bug #39845 (Persistent connections generate a warning in pdo_pgsql).
      Ilia
    • Fixed bug #39832 (SOAP Server: parameter not matching the WSDL specified type are set to 0).
      Dmitry
    • Fixed bug #39825 (foreach produces memory error).
      Dmitry
    • Fixed bug #39816 (apxs2filter ignores httpd.conf & .htaccess php config settings).
      Ilia
    • Fixed bug #39815 (SOAP double encoding is not locale-independent).
      Dmitry
    • Fixed bug #39797 (virtual() does not reset changed INI settings).
      Ilia
    • Fixed bug #39795 (build fails on AIX because crypt_r() uses different data struct).
      Tony
    • Fixed bug #39791 (Crash in strtotime() on overly long relative date multipliers).
      Ilia
    • Fixed bug #39787 (PHP doesn't work with Apache 2.3). (mv at binarysec dot com).
    • Fixed bug #39782 (setTime() on a DateTime constructed with a Weekday yields incorrect results).
      Ilia
    • Fixed bug #39780 (PNG image with CRC/data error raises fatal error) (Pierre)
    • Fixed bug #39779 (Enable AUTH PLAIN mechanism in underlying libc-client).
      michael dot heimpold at s2000 dot tu-chemnitz dot de
      Ilia
    • Fixed bug #39775 ("Indirect modification ..." message is not shown).
      Dmitry
    • Fixed bug #39763 (magic quotes are applied twice by ext/filter in parse_str()).
      Ilia
    • Fixed bug #39760 (cloning fails on nested SimpleXML-Object).
      Rob
    • Fixed bug #39759 (Can't use stored procedures fetching multiple result sets in pdo_mysql).
      Ilia
    • Fixed bug #39754 (Some POSIX extension functions not thread safe).
      Ilia
      wharmby at uk dot ibm dot com
    • Fixed bug #39751 (putenv crash on Windows).
      KevinJohnHoffman at gmail.com
    • Fixed bug #39732 (oci_bind_array_by_name doesn't work on Solaris 64bit).
      Tony
    • Fixed bug #39724 (Broken build due to spl/filter usage of pcre extension).
      Tony
      Ilia
    • Fixed bug #39718 (possible crash if assert.callback is set in ini).
      Ilia
    • Fixed bug #39702 (php crashes in the allocator on linux-m68k).
      Dmitry
    • Fixed bug #39685 (iconv() - undefined function).
      Hannes
    • Fixed bug #39673 (file_get_contents causes bus error on certain offsets).
      Tony
    • Fixed bug #39663 (Memory leak in pg_get_notify() and a possible memory corruption on Windows in pgsql and pdo_pgsql extensions).
      Ilia
      matteo at beccati dot com
    • Fixed bug #39662 (Segfault when calling asXML() of a cloned SimpleXMLElement).
      Rob
      Tony
    • Fixed bug #39656 (crash when calling fetch() on a PDO statment object after closeCursor()).
      Ilia
      Tony
    • Fixed bug #39653 (ext/dba doesn't check for db-4.5 and db-4.4 when db4 support is enabled).
      Tony
    • Fixed bug #39652 (Wrong negative results from memory_get_usage()).
      Dmitry
    • Fixed bug #39648 (Implementation of PHP functions chown() and chgrp() are not thread safe).
      Ilia
      wharmby at uk dot ibm dot com
    • Fixed bug #39640 (Segfault with "Allowed memory size exhausted").
      Dmitry
    • Fixed bug #39625 (Apache crashes on importStylesheet call).
      Rob
    • Fixed bug #39623 (thread safety fixes on *nix for putenv() & mime_magic).
      Ilia
      wharmby at uk dot ibm dot com
    • Fixed bug #39621 (str_replace() is not binary safe on strings with equal length).
      Tony
    • Fixed bug #39613 (Possible segfault in imap initialization due to missing module dependency).
      wharmby at uk dot ibm dot com
      Tony
    • Fixed bug #39606 (Use of com.typelib_file in PHP.ini STILL causes A/V).
      Rob
    • Fixed bug #39602 (Invalid session.save_handler crashes PHP).
      Dmitry
    • Fixed bug #39596 (Creating Variant of type VT_ARRAY).
      Rob
    • Fixed bug #39583 (ftp_put() does not change transfer mode to ASCII).
      Tony
    • Fixed bug #39576 (array_walk() doesn't separate user data zval).
      Tony
    • Fixed bug #39575 (move_uploaded_file() no longer working (safe mode related)).
      Tony
    • Fixed bug #39571 (timeout ssl:// connections).
      Ilia
    • Fixed bug #39564 (PDO::errorInfo() returns inconsistent information when sqlite3_step() fails).
      Tony
    • Fixed bug #39548 (ZMSG_LOG_SCRIPT_NAME not routed to OutputDebugString() on Windows).
      Dmitry
    • Fixed bug #39538 (fgetcsv can't handle starting newlines and trailing odd number of backslashes).
      David Soria Parra
      Pierre
    • Fixed bug #39534 (Error in maths to calculate of ZEND_MM_ALIGNED_MIN_HEADER_SIZE).
      wharmby at uk dot ibm dot com
      Dmitry
    • Fixed bug #39527 (Failure to retrieve results when multiple unbuffered, prepared statements are used in pdo_mysql).
      Ilia
    • Fixed bug #39508 (imagefill crashes with small images 3 pixels or less).
      Pierre
    • Fixed bug #39506 (Archive corrupt with ZipArchive::addFile method).
      Pierre
    • Fixed bug #39504 (xmlwriter_write_dtd_entity() creates Attlist tag, not entity).
      Hannes
    • Fixed bug #39483 (Problem with handling of \ char in prepared statements).
      Ilia
      suhachov at gmail dot com
    • Fixed bug #39458 (ftp_nlist() returns false on empty dirs).
      Nuno
    • Fixed bug #39454 (Returning a SOAP array segfaults PHP).
      Dmitry
    • Fixed bug #39450 (getenv() fills other super-globals).
      Ilia
      Tony
    • Fixed bug #39449 (Overloaded array properties do not work correctly).
      Dmitry
    • Fixed bug #39445 (Calling debug_backtrace() in the __toString() function produces a crash).
      Dmitry
    • Fixed bug #39438 (Fatal error: Out of memory).
      Dmitry
    • Fixed bug #39435 ('foo' instanceof bar gives invalid opcode error).
      Sara
    • Fixed bug #39414 (Syntax error while compiling with Sun Workshop Complier).
      Johannes
    • Fixed bug #39398 (Booleans are not automatically translated to integers).
      Ilia
    • Fixed bug #39394 (Missing check for older variants of openssl).
      Ilia
    • Fixed bug #39367 (clearstatcache() doesn't clear realpath cache).
      j at pureftpd dot org
      Dmitry
    • Fixed bug #39366 (imagerotate does not use alpha with angle > 45 degrees) (Pierre)
    • Fixed bug #39364 (Removed warning on empty haystack inside mb_strstr()).
      Ilia
    • Fixed bug #39362 (Added an option to imap_open/imap_reopen to control the number of connection retries).
      Ilia
    • Fixed bugs #39361 & #39400 (mbstring function overloading problem).
      Seiji
    • Fixed bug #39354 (Allow building of curl extension against libcurl 7.16.0).
      Ilia
    • Fixed bug #39350 (crash with implode("\n", array(false))).
      Ilia
    • Fixed bug #39344 (Unnecessary calls to OnModify callback routine for an extension INI directive).
      wharmby at uk dot ibm dot com
      Dmitry
    • Fixed bug #39320 (ZEND_HASH_APPLY_STOP causes deletion).
      Marcus
    • Fixed bug #39313 (spl_autoload triggers Fatal error).
      Marcus
    • Fixed bug #39300 (make install fails if wget is not available).
      Tony
    • Fixed bug #39297 (Memory corruption because of indirect modification of overloaded array).
      Dmitry
    • Fixed bug #39286 (misleading error message when invalid dimensions are given) (Pierre)
    • Fixed bug #39273 (imagecopyresized may ignore alpha channel) (Pierre)
    • Fixed bug #39265 (Fixed path handling inside mod_files.sh).
      michal dot taborsky at gmail dot com
      Ilia
    • Fixed bug #39217 (serialNumber might be -1 when the value is too large).
      Pierre
      Tony
    • Fixed bug #39215 (Inappropriate close of stdin/stdout/stderr).
      Wez
      Ilia
    • Fixed bug #39201 (Possible crash in Apache 2 with 413 ErrorHandler).
      Ilia
    • Fixed bug #39151 (Parse error in recursiveiteratoriterator.php).
      Marcus
    • Fixed bug #39121 (Incorrect return array handling in non-wsdl soap client).
      Dmitry
    • Fixed bug #39090 (DirectoryFilterDots doxygen docs and example is wrong).
      Marcus
    • Fixed bug #38852 (XML-RPC Breaks iconv).
      Hannes
    • Fixed bug #38770 (unpack() broken with longs on 64 bit machines). (Ilia, David Soria Parra).
    • Fixed bug #38698 (for some keys cdbmake creates corrupted db and cdb can't read valid db).
      Marcus
    • Fixed bug #38680 (Added missing handling of basic types in json_decode).
      Ilia
    • Fixed bug #38604 (Fixed request time leak inside foreach() when iterating through virtual properties).
      Dmitry
    • Fixed bug #38602 (header( "HTTP/1.0 ..." ) does not change proto version).
      Ilia
    • Fixed bug #38542 (proc_get_status() returns wrong PID on windows).
      Nuno
    • Fixed bug #38536 (SOAP returns an array of values instead of an object).
      Dmitry
    • Fixed bug #38456 (Apache2 segfaults when virtual() is called in .php ErrorDocument).
      Ilia
    • Fixed bug #38325 (spl_autoload_register() gives wrong line for "class not found").
      Ilia
    • Fixed bug #38319 (Remove bogus warnings from persistent PDO connections).
      Ilia
    • Fixed bug #38274 (Memlimit fatal error sent to "wrong" stderr when using fastcgi).
      Dmitry
    • Fixed bug #38252 (Incorrect PDO error message on invalid default fetch mode).
      Ilia
    • Fixed bug #37927 (Prevent trap when COM extension processes argument of type VT_DISPATCH|VT_REF) (Andy)
    • Fixed bug #37773 (iconv_substr() gives "Unknown error" when string length = 1").
      Ilia
    • Fixed bug #37627 (session save_path check checks the parent directory).
      Ilia
    • Fixed bug #37619 (proc_open() closes stdin on fork() failure).
      jdolecek at NetBSD dot org
      Nuno
    • Fixed bug #37588 (COM Property propputref converts to PHP function and can't be accesed).
      Rob
    • Fixed bug #36975 (natcasesort() causes array_pop() to misbehave).
      Hannes
    • Fixed bug #36812 (pg_execute() modifies input array).
      Ilia
    • Fixed bug #36798 (Error parsing named parameters with queries containing high-ascii chars).
      Ilia
    • Fixed bug #36644 (possible crash in variant_date_from_timestamp()).
      Ilia
    • Fixed bug #36427 (proc_open() / proc_close() leak handles on windows).
      jdolecek at NetBSD dot org
      Nuno
    • Fixed bug #36392 (wrong number of decimal digits with %e specifier in sprintf).
      Matt
      Ilia
    • Fixed bug #36214 (__get method works properly only when conditional operator is used).
      Dmitry
    • Fixed bug #35634 (Erroneous "Class declarations may not be nested" error raised).
      Carl P. Corliss
      Dmitry
    • Fixed bug #35106 (nested foreach fails when array variable has a reference).
      Dmitry
    • Fixed bug #34564 (COM extension not returning modified "out" argument) (Andy)
    • Fixed bug #33734 (Something strange with COM Object).
      Rob
    • Fixed bug #33386 (ScriptControl only sees last function of class).
      Rob
    • Fixed bug #33282 (Re-assignment by reference does not clear the is_ref flag) (Ilia, Dmitry, Matt Wilmas)
    • Fixed bug #30074 (apparent symbol table error with extract($blah, EXTR_REFS)) (Brian)
    • Fixed bug #29840 (is_executable() does not honor safe_mode_exec_dir setting).
      Ilia
    • Fixed PECL bug #7295 (ORA-01405: fetched column value is NULL on LOB fields).
      Tony

PHP 5.2


  Represents a security release