Every annual x.y release is considered a major release, and may contain backwards compatibility breaks,
so having a version in 5.x has no major significance.
Version-specific change logs are now available (recommended).
Fixed bug #70958 (Invalid opcode while using ::class as trait method paramater default value).
Fixed bug #70957 (self::class can not be resolved with reflection for abstract class).
Fixed bug #70944 (try{ } finally{} can create infinite chains of exceptions).
Fixed bug #61751 (SAPI build problem on AIX: Undefined symbol: php_register_internal_extensions).
fpm
Fixed bug #70755 (fpm_log.c memory leak and buffer overflow).
gd
Fixed bug #70976 (Memory Read via gdImageRotateInterpolated Array Index Out of Bounds). (CVE-2016-1903)
mysqlnd
Fixed bug #68077 (LOAD DATA LOCAL INFILE / open_basedir restriction).
soap
Fixed bug #70900 (SoapClient systematic out of memory error).
standard
Fixed bug #70960 (ReflectionFunction for array_unique returns wrong number of parameters).
pdo_firebird
Fixed bug #60052 (Integer returned as a 64bit integer on X64_86).
wddx
Fixed bug #70661 (Use After Free Vulnerability in WDDX Packet Deserialization).
Fixed bug #70741 (Session WDDX Packet Deserialization Type Confusion Vulnerability).
xmlrpc
Fixed bug #70728 (Type Confusion Vulnerability in PHP_to_XMLRPC_worker()).
PHP 5.6.16
Released 26 Nov, 2015
core
Fixed bug #70828 (php-fpm 5.6 with opcache crashes when referencing a non-existent constant).
Fixed bug #70748 (Segfault in ini_lex () at Zend/zend_ini_scanner.l).
mysqlnd
Fixed bug #68344 (MySQLi does not provide way to disable peer certificate validation) by introducing MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT connection flag.
Made calls from incompatible context issue an E_DEPRECATED warning instead of E_STRICT (phase 1 of RFC: https://wiki.php.net/rfc/incompat_ctx).
Uploads equal or greater than 2GB in size are now accepted.
Reduced POST data memory usage by 200-300%. Changed INI setting always_populate_raw_post_data to throw a deprecation warning when enabling and to accept -1 for never populating the $HTTP_RAW_POST_DATA global variable, which will be the default in future PHP versions.
Implemented dedicated syntax for variadic functions (RFC: https://wiki.php.net/rfc/variadics).
Fixed bug #50333 Improving multi-threaded scalability by using emalloc/efree/estrdup
Implemented constant scalar expressions (with support for constants) (RFC: https://wiki.php.net/rfc/const_scalar_exprs).
Moved GMP to use object as the underlying structure and implemented various improvements based on this. (RFC: https://wiki.php.net/rfc/operator_overloading_gmp).
Added gmp_root() and gmp_rootrem() functions for calculating nth roots.
Peer name verification matches SAN DNS names for certs using the Subject Alternative Name x509 extension.
Fixed segfault when built against OpenSSL>=1.0.1
Added SPKAC support.
Fallback to Windows CA cert store for peer verification if no openssl.cafile ini directive or "cafile" SSL context option specified in Windows.
The openssl.cafile and openssl.capath ini directives introduced in alpha2 now have PHP_INI_PERDIR accessibility (was PHP_INI_ALL).
New "peer_name" SSL context option replaces "CN_match" (which still works as before but triggers E_DEPRECATED).
Fixed segfault when accessing non-existent context for client SNI use
Fixed bug #66501 (Add EC key support to php_openssl_is_private_key).
Fixed Bug #47030 (add new boolean "verify_peer_name" SSL context option allowing clients to verify cert names separately from the cert itself). "verify_peer_name" is enabled by default for client streams.
New openssl_get_cert_locations() function to aid CA file and peer verification debugging.
Encrypted stream wrappers now disable TLS compression by default.
New "capture_session_meta" SSL context option allows encrypted client and server streams access to negotiated protocol/cipher information.
New "honor_cipher_order" SSL context option allows servers to prioritize cipher suites of their choosing when negotiating SSL/TLS handshakes.
New "single_ecdh_use" and "single_dh_use" SSL context options allow for improved forward secrecy in encrypted stream servers.
New "dh_param" SSL context option allows stream servers control over the parameters when negotiating DHE cipher suites.
New "ecdh_curve" SSL context option allowing stream servers to specify the curve to use when negotiating ephemeral ECDHE ciphers (defaults to NIST P-256).
New "rsa_key_size" SSL context option gives stream servers control over the key size (in bits) used for RSA key agreements.
Crypto methods for encrypted client and server streams now use bitwise flags for fine-grained protocol support.
Added new tlsv1.0 stream wrapper to specify TLSv1 client/server method. tls wrapper now negotiates TLSv1, TLSv1.1 or TLSv1.2.
Encrypted client streams now enable SNI by default.
Encrypted streams now prioritize ephemeral key agreement and high strength ciphers by default.
New OPENSSL_DEFAULT_STREAM_CIPHERS constant exposes default cipher list.
New STREAM_CRYPTO_METHOD_* constants for enhanced control over the crypto methods negotiated encrypted server/client sessions.
Encrypted stream servers now automatically mitigate potential DoS vector arising from client-initiated TLS renegotiation. New "reneg_limit", "reneg_window" and "reneg_limit_callback" SSL context options for custom renegotiation limiting control.
Fixed memory leak in windows cert verification on verify failure.
Peer certificate capturing via SSL context options now functions even if peer verification fails.
Encrypted TLS servers now support the server name indication TLS extension via the new "SNI_server_certs" SSL context option.
Fixed bug #66833 (Default disgest algo is still MD5, switch to SHA1).
Fixed bug #67215 (php-cgi work with opcache, may be segmentation fault happen)
pcre
Fixed bug #67238 (Ungreedy and min/max quantifier bug, applied patch from the upstream).
Upgraded to PCRE 8.34.
Added support for (*MARK) backtracking verbs.
pgsql
Fixed bug #67550 (Error in code "form" instead of "from", pgsql.c, line 756), which affected builds against libpq < 7.3.
pg_insert()/pg_select()/pg_update()/pg_delete() are no longer EXPERIMENTAL.
Impremented FR #25854 Return value for pg_insert should be resource instead of bool.
Implemented FR #41146 - Add "description" with exteneded flag pg_meta_data(). pg_meta_data(resource $conn, string $table [, bool extended]) It also made pg_meta_data() return "is enum" always.
Read-only access to the socket stream underlying database connections is exposed via a new pg_socket() function to allow read/write polling when establishing asynchronous connections and executing queries in non-blocking applications.
Asynchronous connections are now possible using the PGSQL_CONNECT_ASYNC flag in conjunction with a new pg_connect_poll() function and connection polling status constants.
New pg_flush() and pg_consume_input() functions added to manually complete non-blocking reads/writes to underlying connection sockets.
pg_version() returns full report which obtained by PQparameterStatus().
Added pg_lo_truncate().
Added 64bit large object support for PostgreSQL 9.3 and later.
Fixed bug #67555 (Cannot build against libpq 7.3).
phpdbg
Fixed bug #67575 (Compilation fails for phpdbg when the build directory != src directory).
Fixed Bug #67499 (readline feature not enabled when build with libedit).
Fix issue krakjoe/phpdbg#94 (List behavior is inconsistent).
Fix issue krakjoe/phpdbg#97 (The prompt should always ensure it is on a newline).
Fix issue krakjoe/phpdbg#98 (break if does not seem to work).
Fix issue krakjoe/phpdbg#99 (register function has the same behavior as run).
Fix issue krakjoe/phpdbg#100 (No way to list the current stack/frames) (Help entry was missing).
Fixed bug which caused phpdbg to fail immediately on startup in non-debug builds.
Fixed Bug #63657 (pgsqlCopyFromFile, pgsqlCopyToArray use Postgres < 7.3 syntax).
Cleaned up code by increasing the requirements to libpq versions providing PQexecParams, PQprepare, PQescapeStringConn, PQescapeByteaConn. According to the release notes that means 8.0.8+ or 8.1.4+.
Deprecated PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, an undocument constant effectively equivalent to PDO::ATTR_EMULATE_PREPARES.
Added PDO::PGSQL_ATTR_DISABLE_PREPARES constant to execute the queries without preparing them, while still passing parameters separately from the command text using PQexecParams.
pdo_firebird
Fixed Bug #66071 (memory corruption in error handling)
phar
Fixed bug #64498 ($phar->buildFromDirectory can't compress file with an accent in its name).
Fixed bug #67587 (Redirection loop on nginx with FPM).
readline
Fixed bug #55496 (Interactive mode doesn't force a newline before the prompt).
Fixed bug #67496 (Save command history when exiting interactive shell with control-c).
reflection
Implemented FR #67713 (loosen the restrictions on ReflectionClass::newInstanceWithoutConstructor()).
session
Fixed bug #67694 (Regression in session_regenerate_id()).
Fixed missing type checks in php_session_create_id .
Fixed bug #66827 (Session raises E_NOTICE when session name variable is array).
Fixed Bug #65315 (session.hash_function silently fallback to default md5)
Implemented Request #17860 (Session write short circuit).
Implemented Request #20421 (session_abort() and session_reset() function).
Remove session_gc() and session_serializer_name() wich were introduced in the first 5.6.0 alpha.
Fixed bug #65028 (Phar::buildFromDirectory creates corrupt archives for some specific contents).
sessions
Implemented strict sessions RFC (https://wiki.php.net/rfc/strict_sessions) which protects against session fixation attacks and session collisions. (CVE-2011-4718).
Fixed possible buffer overflow under Windows. Note: Not a security fix.
Changed session.auto_start to PHP_INI_PERDIR.
soap
Fixed bug #65018 (SoapHeader problems with SoapServer).
spl
Fixed bug #65328 (Segfault when getting SplStack object Value).
Added RecursiveTreeIterator setPostfix and getPostifx methods.
Added simplified password hashing API (https://wiki.php.net/rfc/password_hash).
Added support for constant array/string dereferencing.
Added array_column function which returns a column in a multidimensional array. https://wiki.php.net/rfc/array_column.
Added boolval().
Added "Z" option to pack/unpack.
Added Generator::throw() method.
Added Class Name Resolution As Scalar Via "class" Keyword.
Added optional second argument for assert() to specify custom message. Patch by Lonny Kapelushnik (lonny@lonnylot.com).
Added support for using empty() on the result of function calls and other expressions (https://wiki.php.net/rfc/empty_isset_exprs).
Added support for non-scalar Iterator keys in foreach (https://wiki.php.net/rfc/foreach-non-scalar-keys).
Added support for list in foreach (https://wiki.php.net/rfc/foreachlist).
Added support for changing the process's title in CLI/CLI-Server SAPIs. The implementation is more robust that the proctitle PECL module. More details here: https://wiki.php.net/rfc/cli_process_title.
Added ARMv7/v8 versions of various Zend arithmetic functions that are implemented using inline assembler
Added systemtap support by enabling systemtap compatible dtrace probes on linux.
Optimized access to temporary and compiled VM variables. 8% less memory reads.
The VM stacks for passing function arguments and syntaticaly nested calls were merged into a single stack. The stack size needed for op_array execution is calculated at compile time and preallocated at once. As result all the stack push operatins don't require checks for stack overflow any more.
Improve set_exception_handler while doing reset.
Return previous handler when passing NULL to set_error_handler and set_exception_handler.
Fixed bug #49348 (Uninitialized ++$foo->bar; does not cause a notice).
Fixed Bug #23955: allow specifying Max-Age attribute in setcookie()
Fixed bug #18556 (Engine uses locale rules to handle class names).
Fix undefined behavior when converting double variables to integers. The double is now always rounded towards zero, the remainder of its division by 2^32 or 2^64 (depending on sizeof(long)) is calculated and it's made signed assuming a two's complement representation.
Drop support for bison < 2.4 when building PHP from GIT source.
apache2 handler sapi
Enabled Apache 2.4 configure option for Windows
calendar
Fixed bug #64895 (Integer overflow in SndToJewish).
Fixed bug #54254 (cal_from_jd returns month = 6 when there is only one Adar)
cli server
Fixed bug #64128 (buit-in web server is broken on ppc64).
curl
Remove curl stream wrappers.
Implemented FR #46439 - added CURLFile for safer file uploads.
Fixed bug #53437 (Crash when using unserialized DatePeriod instance).
dba
Bug #62489: dba_insert not working as expected.
filter
Implemented FR #49180 - added MAC address validation.
fileinfo
Upgraded libmagic to 5.14.
Fixed bug #64830 (mimetype detection segfaults on mp3 file).
Fixed bug #63590 (Different results in TS and NTS under Windows).
Fixed bug #63248 (Load multiple magic files from a directory under Windows).
fpm
Add --with-fpm-systemd option to report health to systemd, and systemd_interval option to configure this. The service can now use Type=notify in the systemd unit file.
Ignore QUERY_STRING when sent in SCRIPT_FILENAME.
Log a warning when a syscall fails.
Implemented FR #64764 (add support for FPM init.d script).
Fixed Bug #64915 (error_log ignored when daemonize=0).
Fixed bug #63999 (php with fpm fails to build on Solaris 10 or 11).
Fixed some possible memory or resource leaks and possible null dereference detected by code coverity scan.
Fixed Bug #64961 (segfault in imagesetinterpolation).
Fix build with system libgd >= 2.1 which is now the minimal version required (as build with previous version is broken). No change when bundled libgd is used.
hash
Added support for PBKDF2 via hash_pbkdf2().
Fixed Bug #64745 (hash_pbkdf2() truncates data when using default length and hex output).
intl
Added UConverter wrapper.
The intl extension now requires ICU 4.0+.
Added intl.use_exceptions INI directive, which controls what happens when global errors are set together with intl.error_level.
MessageFormatter::format() and related functions now accepted named arguments and mixed numeric/named arguments in ICU 4.8+.
MessageFormatter::format() and related functions now don't error out when an insufficient argument count is provided. Instead, the placeholders will remain unsubstituted.
MessageFormatter::parse() and MessageFormat::format() (and their static equivalents) don't throw away better than second precision in the arguments.
IntlDateFormatter::__construct and datefmt_create() now accept for the $timezone argument time zone identifiers, IntlTimeZone objects, DateTimeZone objects and NULL.
IntlDateFormatter::__construct and datefmt_create() no longer accept invalid timezone identifiers or empty strings.
The default time zone used in IntlDateFormatter::__construct and datefmt_create() (when the corresponding argument is not passed or NULL is passed) is now the one given by date_default_timezone_get(), not the default ICU time zone.
The time zone passed to the IntlDateFormatter is ignored if it is NULL and if the calendar passed is an IntlCalendar object -- in this case, the IntlCalendar's time zone will be used instead. Otherwise, the time zone specified in the $timezone argument is used instead. This does not affect old code, as IntlCalendar was introduced in this version.
IntlDateFormatter::__construct and datefmt_create() now accept for the $calendar argument also IntlCalendar objects.
IntlDateFormatter::getCalendar() and datefmt_get_calendar() return false if the IntlDateFormatter was set up with an IntlCalendar instead of the constants IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not exist before this version.
IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also accept an IntlCalendar object, in which case its time zone is taken. Passing a constant is still allowed, and still keeps the time zone.
IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are deprecated. Use IntlDateFormatter::setTimeZone() or datefmt_set_timezone() instead.
IntlDateFormatter::format() and datefmt_format() now also accept an IntlCalendar object for formatting.
Added the classes: IntlCalendar, IntlGregorianCalendar, IntlTimeZone, IntlBreakIterator, IntlRuleBasedBreakIterator and IntlCodePointBreakIterator.
Added the methods: IntlDateFormatter::formatObject(), IntlDateFormatter::getCalendarObject(), IntlDateFormatter::getTimeZone(), IntlDateFormatter::setTimeZone().
Added the functions: datefmt_format_object(), datefmt_get_calendar_object(), datefmt_get_timezone(), datefmt_set_timezone(), datefmt_get_calendar_object(), intlcal_create_instance().
mbstring
Fixed bug #64769 (mbstring PHPTs crash on Windows x64).
MCrypt
mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw E_DEPRECATED.
mysql
This extension is now deprecated, and deprecation warnings will be generated when connections are established to databases via mysql_connect(), mysql_pconnect(), or through implicit connection: use MySQLi or PDO_MySQL instead (https://wiki.php.net/rfc/mysql_deprecation).
Dropped support for LOAD DATA LOCAL INFILE handlers when using libmysql. Known for stability problems.
Added support for SHA256 authentication available with MySQL 5.6.6+.
mysqli
Added mysqli_begin_transaction()/mysqli::begin_transaction(). Implemented all options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT and ROLLBACK through options to mysqli_commit()/mysqli_rollback() and their respective OO counterparts. They work in libmysql and mysqlnd mode.
Fixed bug #64726 (Segfault when calling fetch_object on a use_result and DB pointer has closed).
Fixed bug #64394 (MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS undeclared when using Connector/C).
mysqlnd
Add new begin_transaction() call to the connection object. Implemented all options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT and ROLLBACK.
Fixed bug #64660 (Segfault on memory exhaustion within function definition).
calendar
Fixed bug #64895 (Integer overflow in SndToJewish).
fileinfo
Fixed bug #64830 (mimetype detection segfaults on mp3 file).
fpm
Ignore QUERY_STRING when sent in SCRIPT_FILENAME.
Fixed some possible memory or resource leaks and possible null dereference detected by code coverity scan.
Log a warning when a syscall fails.
Add --with-fpm-systemd option to report health to systemd, and systemd_interval option to configure this. The service can now use Type=notify in the systemd unit file.
MySQLi
Fixed bug #64726 (Segfault when calling fetch_object on a use_result and DB pointer has closed).
Phar
Fixed bug #64214 (PHAR PHPTs intermittently crash when run on DFS, SMB or with non std tmp dir).
snmp
Fixed bug #64765 (Some IPv6 addresses get interpreted wrong).
Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals).
zlib
Fixed bug #61306 (initialization of global inappropriate for ZTS).
Fixed bug #61287 (A particular string fails to decompress).
Fixed bug #61139 (gzopen leaks when specifying invalid mode).
PHP 5.4.0
Released 01 Mar, 2012
installation
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.
removed legacy features
break/continue $var syntax.
Safe mode and all related php.ini options.
register_globals and register_long_arrays php.ini options.
import_request_variables().
allow_call_time_pass_reference.
define_syslog_variables php.ini option and its associated function.
highlight.bg php.ini option.
safe_mode, safe_mode_gid, safe_mode_include_dir, safe_mode_exec_dir, safe_mode_allowed_env_vars and safe_mode_protected_env_vars php.ini options.
zend.ze1_compatibility_mode php.ini option.
Session bug compatibility mode (session.bug_compat_42 and session.bug_compat_warn php.ini options).
session_is_registered(), session_register() and session_unregister() functions.
y2k_compliance php.ini option.
magic_quotes_gpc, magic_quotes_runtime and magic_quotes_sybase php.ini options. get_magic_quotes_gpc, get_magic_quotes_runtime are kept but always return false, set_magic_quotes_runtime raises an E_CORE_ERROR.
Removed support for putenv("TZ=..") for setting the timezone.
Removed the timezone guessing algorithm in case the timezone isn't set with date.timezone or date_default_timezone_set(). Instead of a guessed timezone, "UTC" is now used instead.
moved extensions to pecl
ext/sqlite. (Note: the ext/sqlite3 and ext/pdo_sqlite extensions are not affected)
general improvements
Added short array syntax support ([1,2,3]), see UPGRADING guide for full details.
Added binary number format (0b001010).
Added support for Class::{expr}() syntax
Added multibyte support by default. Previously PHP had to be compiled with --enable-zend-multibyte. Now it can be enabled or disabled through the zend.multibyte directive in php.ini.
Removed compile time dependency from ext/mbstring
Added support for Traits.
Added closure $this support back.
Added array dereferencing support.
Added callable typehint.
Added indirect method call through array. FR #47160.
Added DTrace support.
Added class member access on instantiation (e.g. (new foo)->bar()) support.
<?= is now always available regardless of the short_open_tag setting.
Implemented Zend Signal Handling (configurable option --enable-zend-signals, off by default).
Improved output layer, see README.NEW-OUTPUT-API for internals.
Improved UNIX build system to allow building multiple PHP binary SAPIs and one SAPI module the same time. FR #53271, FR #52419.
Implemented closure rebinding as parameter to bindTo.
Improved the warning message of incompatible arguments.
Improved ternary operator performance when returning arrays.
Changed error handlers to only generate docref links when the docref_root php.ini setting is not empty.
Changed silent conversion of array to string to produce a notice.
Changed default encoding from ISO-8859-1 to UTF-8 when not specified in htmlspecialchars and htmlentities.
Changed casting of null/''/false into an Object when adding a property from E_STRICT into a warning.
Changed E_ALL to include E_STRICT.
Disabled Windows CRT warning by default, can be enabled again using the php.ini directive windows_show_crt_warnings.
Fixed bug #55378: Binary number literal returns float number though its value is small enough.
improved zend engine memory usage
Improved parse error messages.
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 is represented by the 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 a 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 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.
improved zend engine - performance tweaks and optimizations
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.
Improved performance of @ operator.
Simplified string offset reading. Given $str="abc" then $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.
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.
other improvements to zend engine
Added an optimization which saves memory and emalloc/efree calls for empty HashTables.
Added ability to reset user opcode handlers .
Changed the structure of op_array.opcodes. The constant values are moved from opcode operands into a separate literal table.
Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods.
improved core functions
Enforce an extended class' __construct arguments to match the abstract constructor in the base class.
Disallow reusing superglobal names as parameter names.
Added optional argument to debug_backtrace() and debug_print_backtrace() to limit the amount of stack frames returned.
Added hex2bin() function.
number_format() no longer truncates multibyte decimal points and thousand separators to the first byte. FR #53457.
Added support for object references in recursive serialize() calls. FR #36424.
Added support for SORT_NATURAL and SORT_FLAG_CASE in array sort functions (sort, rsort, ksort, krsort, asort, arsort and array_multisort). FR#55158
Added stream metadata API support and stream_metadata() stream class handler.
User wrappers can now define a stream_truncate() method that responds to truncation, e.g. through ftruncate(). FR #53888.
Improved unserialize() performance.
Changed array_combine() to return empty array instead of FALSE when both parameter arrays are empty. FR #34857.
Fixed bug #61095 (Incorect lexing of 0x00*+<NUM>).
Fixed bug #60965 (Buffer overflow on htmlspecialchars/entities with $double=false).
Fixed bug #60895 (Possible invalid handler usage in windows random functions).
Fixed bug #60879 (unserialize() Does not invoke __wakeup() on object).
Fixed bug #60825 (Segfault when running symfony 2 tests).
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.
IPv6 support.
Way of representing OID value can now be changed when SNMP_VALUE_OBJECT is used for value output mode. Use or'ed SNMP_VALUE_LIBRARY(default if not specified) or SNMP_VALUE_PLAIN.
Fixed bug #60749 (SNMP module should not strip non-standard SNMP port from hostname).
Fixed bug #60585 (php build fails with USE flag snmp when IPv6 support is disabled).
Fixed bug #54089 (token_get_all with regards to __halt_compiler is not binary safe).
improved xsl extension
Added XsltProcessor::setSecurityPrefs($options) and getSecurityPrefs() to define forbidden operations within XSLT stylesheets, default is not to enable write operations from XSLT. Bug #54446
XSL doesn't stop transformation anymore, if a PHP function can't be called
improved zlib extension
Re-implemented non-file related functionality.
Fixed bug #55544 (ob_gzhandler always conflicts with zlib.output_compression).
PHP 5.3.29
Released 14 Aug, 2014
core
Fixed bug #66127 (Segmentation fault with ArrayObject unset).
Fixed bug #62146 com_dotnet cannot be built shared.
core
Fixed CVE-2012-2143.
Fixed missing bound check in iptcparse().
Fixed bug #62373 (serialize() generates wrong reference to the object).
Fixed bug #62005 (unexpected behavior when incrementally assigning to a member of a null object).
Fixed bug #61991 (long overflow in realpath_cache_get()).
Fixed bug #61764 ('I' unpacks n as signed if n > 2^31-1 on LP64).
Fixed bug #61730 (Segfault from array_walk modifying an array passed by reference).
Fixed bug #61713 (Logic error in charset detection for htmlentities).
Fixed bug #54197 ([PATH=] sections incompatibility with user_ini.filename set to null).
Changed php://fd to be available only for CLI.
fileinfo
Fixed bug #61812 (Uninitialised value used in libmagic).
iconv extension
Fixed a bug that iconv extension fails to link to the correct library when another extension makes use of a library that links to the iconv library. See https://bugs.gentoo.org/show_bug.cgi?id=364139 for detail.
intl
Fixed bug #62082 (Memory corruption in internal function get_icu_disp_value_src_php()).
Fixed memory leak when calling SplFileInfo's constructor twice.
Fixed bug #61418 (Segmentation fault when DirectoryIterator's or FilesystemIterator's iterators are requested more than once without having had its dtor callback called in between).
Fixed bug #61347 (inconsistent isset behavior of Arrayobject).
Fixed bug #60860 (session.save_handler=user without defined function core dumps).
Fixed bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()).
streams
Fixed bug #61371 (stream_context_create() causes memory leaks on use streams_socket_create).
Fixed bug #61253 (Wrappers opened with errors concurrency problem on ZTS).
Fixed bug #61115 (stream related segfault on fatal error in php_stream_context_link).
Fixed bug #60817 (stream_get_line() reads from stream even when there is already sufficient data buffered). stream_get_line() now behaves more like fgets(), as is documented.
Further fix for bug #60455 (stream_get_line misbehaves if EOF is not detected together with the last read).
Fixed bug #60106 (stream_socket_server silently truncates long unix socket paths).
Fixed bug #55526 (Heartbeat causes a lot of unnecessary events).
Fixed bug #55486 (status show BIG processes number).
Enhanced security by limiting access to user defined extensions. FR #55181.
Added process.max to control the number of process FPM can fork. FR #55166.
Implemented FR #54577 (Enhanced status page with full status and details about each processes. Also provide a web page (status.html) for real-time FPM status.
Lowered default value for Process Manager. FR #54098.
Implemented FR #52569 (Add the "ondemand" process-manager to allow zero children).
Added partial syslog support (on error_log only). FR #52052.
postgres
Fixed bug #60244 (pg_fetch_* functions do not validate that row param is >0).
reflection
Fixed bug #60367 (Reflection and Late Static Binding).
session
Fixed bug #55267 (session_regenerate_id fails after header sent).
simplexml
Reverted the SimpleXML->query() behaviour to returning empty arrays instead of false when no nodes are found as it was since 5.3.3 (bug #48601).
SOAP
Fixed bug #54911 (Access to a undefined member in inherit SoapClient may cause Segmentation Fault).
Fixed bug #48216 (PHP Fatal error: SOAP-ERROR: Parsing WSDL: Extra content at the end of the doc, when server uses chunked transfer encoding with spaces after chunk size).
Fixed bug #44686 (SOAP-ERROR: Parsing WSDL with references).
Added xsl.security_prefs ini option to define forbidden operations within XSLT stylesheets, default is not to enable write operations. This option won't be in 5.4, since there's a new method. Fixes Bug #54446.
PHP 5.3.8
Released 23 Aug, 2011
core
Fixed bug #55439 (crypt() returns only the salt for MD5).
openssl
Reverted a change in timeout handling restoring PHP 5.3.6 behavior, as the new behavior caused mysqlnd SSL connections to hang (#55283).
PHP 5.3.7
Released 18 Aug, 2011
zend engine
Upgraded bundled PCRE to version 8.12.
Fixed bug #55156 (ReflectionClass::getDocComment() returns comment even though the class has none).
Fixed bug #55007 (compiler fail after previous fail).
Fixed bug #54910 (Crash when calling call_user_func with unknown function name).
Fixed bug #54804 (__halt_compiler and imported namespaces).
Fixed bug #54924 (assert.* is not being reset upon request shutdown).
Fixed bug #54895 (Fix compiling with older gcc version without need for membar_producer macro).
Fixed bug #54866 (incorrect accounting for realpath_cache_size).
Fixed bug #54723 (getimagesize() doesn't check the full ico signature).
Fixed bug #54721 (Different Hashes on Windows, BSD and Linux on wrong Salt size).
Fixed bug #54580 (get_browser() segmentation fault when browscap ini directive is set through php_admin_value).
Fixed bug #54332 (Crash in zend_mm_check_ptr // Heap corruption).
Fixed bug #54305 (Crash in gc_remove_zval_from_buffer).
Fixed bug #54238 (use-after-free in substr_replace()). (Stas)
Fixed bug #54204 (Can't set a value with a PATH section in php.ini).
Fixed bug #54180 (parse_url() incorrectly parses path when ? in fragment).
Fixed bug #54137 (file_get_contents POST request sends additional line break).
Fixed bug #53848 (fgetcsv() ignores spaces at beginnings of fields).
Alternative fix for bug #52550, as applied to the round() function (signed overflow), as the old fix impacted the algorithm for numbers with magnitude smaller than 0.
Fixed bug #53727 (Inconsistent behavior of is_subclass_of with interfaces)
Fixed bug #52935 (call exit in user_error_handler cause stream relate core).
Fixed bug #51997 (SEEK_CUR with 0 value, returns a warning).
Fixed bug #50816 (Using class constants in array definition fails).
Fixed bug #50363 (Invalid parsing in convert.quoted-printable-decode filter).
Fixed bug #48465 (sys_get_temp_dir() possibly inconsistent when using TMPDIR on Windows).
apache2 handler sapi
Fixed bug #54529 (SAPI crashes on apache_config.c:197).
cli sapi
Fixed bug #52496 (Zero exit code on option parsing failure).
curl extension
Added ini option curl.cainfo (support for custom cert db).
Added CURLINFO_REDIRECT_URL support.
Added support for CURLOPT_MAX_RECV_SPEED_LARGE and CURLOPT_MAX_SEND_SPEED_LARGE. FR #51815.
datetime extension
Fixed bug where the DateTime object got changed while using date_diff().
Fixed symbolic resolution support when the target is a DFS share.
Fixed bug #52929 (Segfault in filter_var with FILTER_VALIDATE_EMAIL with large amount of data) (CVE-2010-3710).
general improvements
Added stat support for zip stream.
Added follow_location (enabled by default) option for the http stream support.
Improved support for is_link and related functions on Windows.
Added a 3rd parameter to get_html_translation_table. It now takes a charset hint, like htmlentities et al.
implemented feature requests
Implemented FR #52348, added new constant ZEND_MULTIBYTE to detect zend multibyte at runtime.
Implemented FR #52173, added functions pcntl_get_last_error() and pcntl_strerror().
Implemented symbolic links support for open_basedir checks.
Implemented FR #51804, SplFileInfo::getLinkTarget on Windows.
Implemented FR #50692, not uploaded files don't count towards max_file_uploads limit. As a side improvement, temporary files are not opened for empty uploads and, in debug mode, 0-length uploads.
improved mysqlnd
Added new character sets to mysqlnd, which are available in MySQL 5.5
improved php-fpm sapi
Added '-p/--prefix' to php-fpm to use a custom prefix and run multiple instances.
Added custom process title for FPM.
Added '-t/--test' to php-fpm to check and validate FPM conf file.
Added statistics about listening socket queue length for FPM.
core
Fixed extract() to do not overwrite $GLOBALS and $this when using EXTR_OVERWRITE.
Fixed bug in the Windows implementation of dns_get_record, where the two last parameters wouldn't be filled unless the type were DNS_ANY .
Changed the $context parameter on copy() to actually have an effect.
Fixed htmlentities/htmlspecialchars accepting certain ill-formed UTF-8 sequences.
Fixed bug #53409 (sleep() returns NULL on Windows).
Fixed bug #53319 (strip_tags() may strip '<br />' incorrectly).
Fixed bug #53304 (quot_print_decode does not handle lower-case hex digits).
Fixed bug #53226 (file_exists fails on big filenames).
Fixed bug #53198 (changing INI setting "from" with ini_set did not have any effect).
Fixed bug #53180 (post_max_size=0 not disabling the limit when the content type is application/x-www-form-urlencoded or is not registered with PHP).
Fixed bug #53141 (autoload misbehaves if called from closing session).
Fixed bug #53021 (In html_entity_decode, failure to convert numeric entities with ENT_NOQUOTES and ISO-8859-1). Fixed and extended the fix of ENT_NOQUOTES in html_entity_decode that had introduced the bug (rev #185591) to other encodings. Additionaly, html_entity_decode() now doesn't decode " if ENT_NOQUOTES is given.
Fixed bug #52931 (strripos not overloaded with function overloading enabled).
Fixed bug #52772 (var_dump() doesn't check for the existence of get_class_name before calling it).
Fixed bug #52534 (var_export array with negative key).
Fixed bug #52327 (base64_decode() improper handling of leading padding in strict mode).
Fixed bug #52260 (dns_get_record fails with non-existing domain on Windows).
Fixed bug #50953 (socket will not connect to IPv4 address when the host has both IPv4 and IPv6 addresses, on Windows).
Fixed bug #50524 (proc_open on Windows does not respect cwd as it does on other platforms).
Fixed bug #49687 (utf8_decode vulnerabilities and deficiencies in the number of reported malformed sequences). (CVE-2010-3870)
Fixed bug #51003 (unaligned memory access in ext/hash/hash_tiger.c).
iconv extension
Fixed bug #52941 (The 'iconv_mime_decode_headers' function is skipping headers).
Fixed bug #52599 (iconv output handler outputs incorrect content type when flags are used).
Fixed bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded words).
intl extension
Fixed crashes on invalid parameters in intl extension. (CVE-2010-4409).
Added support for formatting the timestamp stored in a DateTime object.
Fixed bug #50590 (IntlDateFormatter::parse result is limited to the integer range).
mbstring extension
Fixed bug #53273 (mb_strcut() returns garbage with the excessive length parameter). (CVE-2010-4156)
Fixed bug #52981 (Unicode casing table was out-of-date. Updated with UnicodeData-6.0.0d7.txt and included the source of the generator program with the distribution) .
Fixed bug #52681 (mb_send_mail() appends an extra MIME-Version header).
mssql extension
Fixed possible crash in mssql_fetch_batch().
Fixed bug #52843 (Segfault when optional parameters are not passed in to mssql_connect).
mysql extension
Fixed bug #52636 (php_mysql_fetch_hash writes long value into int).
mysqli extension
Fixed bug #52891 (Wrong data inserted with mysqli/mysqlnd when using mysqli_stmt_bind_param and value> PHP_INT_MAX).
Fixed bug #52686 (mysql_stmt_attr_[gs]et argument points to incorrect type).
Fixed bug #52654 (mysqli doesn't install headers with structures it uses).
Fixed bug #52433 (Call to undefined method mysqli::poll() - must be static).
Fixed bug #52417 (MySQLi build failure with mysqlnd on MacOS X).
Fixed bug #52413 (MySQLi/libmysql build failure on OS X, FreeBSD).
Fixed bug #52390 (mysqli_report() should be per-request setting).
Fixed bug #52302 (mysqli_fetch_all does not work with MYSQLI_USE_RESULT).
Fixed bug #52221 (Misbehaviour of magic_quotes_runtime (get/set)).
Fixed bug #45921 (Can't initialize character set hebrew).
mysqlnd
Fixed bug #52613 (crash in mysqlnd after hitting memory limit).
odbc extension
Fixed bug #52512 (Broken error handling in odbc_execute).
openssl extension
Fixed possible blocking behavior in openssl_random_pseudo_bytes on Windows.
Fixed bug #53136 (Invalid read on openssl_csr_new()).
Fixed bug #52947 (segfault when ssl stream option capture_peer_cert_chain used).
oracle database extension (oci8)
Fixed bug #53284 (Valgrind warnings in oci_set_* functions)
Fixed bug #51610 (Using oci_connect causes PHP to take a long time to exit). Requires Oracle 11.2.0.2 client libraries (or Oracle bug fix 9891199) for this patch to have an effect.
pcntl extension
Fixed bug #52784 (Race condition when handling many concurrent signals).
pcre extension
Fixed bug #52971 (PCRE-Meta-Characters not working with utf-8).
Fixed bug #52732 (Docs say preg_match() returns FALSE on error, but it returns int(0)).
phar extension
Fixed bug #50987 (unaligned memory access in phar.c).
Fixed bug #53463 (sqlite3 columnName() segfaults on bad column_number).
streams
Fixed forward stream seeking emulation in streams that don't support seeking in situations where the read operation gives back less data than requested and when there was data in the buffer before the emulation started. Also made more consistent its behavior -- should return failure every time less data than was requested was skipped.
Fixed bug #53241 (stream casting that relies on fdopen/fopencookie fails with streams opened with, inter alia, the 'xb' mode).
Fixed bug #53006 (stream_get_contents has an unpredictable behavior when the underlying stream does not support seeking).
Fixed bug #52944 (Invalid write on second and subsequent reads with an inflate filter fed invalid data).
Fixed bug #52820 (writes to fopencookie FILE* not commited when seeking the stream).
wddx extension
Fixed bug #52468 (wddx_deserialize corrupts integer field value when left empty).
zlib extension
Fixed bug #52926 (zlib fopen wrapper does not use context).
PHP 5.3.3
Released 22 Jul, 2010
reset error state in pdo
Changed namespaced classes so that the ctor can only be named __construct now.
implemented fr#51295 (sqlite3
Implemented FR#35638 (Adding udate to imap_fetch_overview results).
Rewrote var_export() to use smart_str rather than output buffering, prevents data disclosure if a fatal error occurs (CVE-2010-2531).
Fixed possible buffer overflows in mysqlnd_list_fields, mysqlnd_change_user.
Fixed possible buffer overflows when handling error packets in mysqlnd. Reported by Stefan Esser.
Fixed very rare memory leak in mysqlnd, when binding thousands of columns.
Fixed a crash when calling an inexistent method of a class that inherits PDOStatement if instantiated directly instead of doing by the PDO methods.
Fixed memory leak on error in mcrypt_create_iv on Windows.
Fixed a possible crash because of recursive GC invocation.
Fixed a possible resource destruction issues in shm_put_var(). Reported by Stefan Esser.
Fixed a possible information leak because of interruption of XOR operator. Reported by Stefan Esser.
Fixed a possible memory corruption because of unexpected call-time pass by refernce and following memory clobbering through callbacks. Reported by Stefan Esser.
fixed a possible memory corruption in arrayobject
Fixed a possible memory corruption in parse_str(). Reported by Stefan Esser.
Fixed a possible memory corruption in pack(). Reported by Stefan Esser.
Fixed a possible memory corruption in substr_replace(). Reported by Stefan Esser.
Fixed a possible memory corruption in addcslashes(). Reported by Stefan Esser.
Fixed a possible stack exhaustion inside fnmatch(). Reported by Stefan Esser.
Fixed a possible dechunking filter buffer overflow. Reported by Stefan Esser.
Fixed a possible arbitrary memory access inside sqlite extension. Reported by Mateusz Kocielski.
Fixed string format validation inside phar extension. Reported by Stefan Esser.
Fixed handling of session variable serialization on certain prefix characters. Reported by Stefan Esser.
Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288).
Fixed 64-bit integer overflow in mhash_keygen_s2k().
Fixed bug #40013 (php_uname() does not return nodename on Netware
Fixed bug #38091 (Mail() does not use FQDN when sending SMTP helo).
Fixed bug #28038 (Sent incorrect RCPT TO commands to SMTP server)
Fixed bug #27051 (Impersonation with FastCGI does not exec process as impersonated user).
PHP 5.3.0
Released 30 Jun, 2009
moved extensions to pecl (derick, lukas, pierre, scott)
Upgraded bundled sqlite to version 3.6.15.
ext/dbase
ext/fbsql
ext/fdf
ext/ncurses
ext/mhash
ext/ming
ext/msql
ext/sybase
Removed the experimental RPL (master/slave) functions from mysqli.
Removed zend.ze1_compatibility_mode.
Removed all zend_extension_* php.ini directives. Zend extensions are now always loaded using zend_extension directive.
Removed special treatment of "/tmp" in sessions for open_basedir. Note: This undocumented behaviour was introduced in 5.2.2.
Removed shebang line check from CGI sapi (checked by scanner).
Changed PCRE, Reflection and SPL extensions to be always enabled.
Changed md5() to use improved implementation.
Changed HTTP stream wrapper to accept any code between and including 200 to 399 as successful.
Changed __call() to be invoked on private/protected method access, similar to properties and __get().
Changed dl() to be disabled by default. Enabled only when explicitly registered by the SAPI. Currently enabled with cli, cgi and embed SAPIs.
Changed opendir(), dir() and scandir() to use default context when no context argument is passed.
Changed open_basedir to allow tightening in runtime contexts.
Changed PHP/Zend extensions to use flexible build IDs.
Changed error level E_ERROR into E_WARNING in Soap extension methods parameter validation.
Changed openssl info to show the shared library version number.
Changed floating point behaviour to consistently use double precision on all platforms and with all compilers.
Changed round() to act more intuitively when rounding to a certain precision and round very large and very small exponents correctly.
Changed session_start() to return false when session startup fails.
Changed property_exists() to check the existence of a property independent of accessibility (like method_exists()).
Changed array_reduce() to allow mixed $initial
improved php syntax and semantics
Added lambda functions and closures.
Added "jump label" operator (limited "goto").
Added NOWDOC syntax.
Added HEREDOC syntax with double quotes.
Added support for using static HEREDOCs to initialize static variables and class members or constants.
Improved syntax highlighting and consistency for variables in double-quoted strings and literal text in HEREDOCs and backticks.
Added "?:" operator.
Added support for namespaces.
Added support for Late Static Binding.
Added support for __callStatic() magic method.
Added forward_static_call(_array) to complete LSB.
Added support for dynamic access of static members using $foo::myFunc().
Improved checks for callbacks.
Added __DIR__ constant.
Added new error modes E_USER_DEPRECATED and E_DEPRECATED. E_DEPRECATED is used to inform about stuff being scheduled for removal in future PHP versions.
Added "request_order" INI variable to control specifically $_REQUEST behavior.
Added support for exception linking.
Added ability to handle exceptions in destructors.
improved php runtime speed and memory usage
Substitute global-scope, persistent constants with their values at compile time.
Optimized ZEND_SIGNED_MULTIPLY_LONG().
Removed direct executor recursion.
Use fastcall calling convention in executor on x86.
Use IS_CV for direct access to $this variable.
Use ZEND_FREE() opcode instead of ZEND_SWITCH_FREE(IS_TMP_VAR).
Lazy EG(active_symbol_table) initialization.
Optimized ZEND_RETURN opcode to not allocate and copy return value if it is not used.
Replaced all flex based scanners with re2c based scanners.
Added garbage collector. .
Improved PHP binary size and startup speed with GCC4 visibility control.
Improved engine stack implementation for better performance and stability.
Improved memory usage by moving constants to read only memory.
Changed exception handling. Now each op_array doesn't contain ZEND_HANDLE_EXCEPTION opcode in the end.
Optimized require_once() and include_once() by eliminating fopen(3) on second usage.
Optimized ZEND_FETCH_CLASS + ZEND_ADD_INTERFACE into single ZEND_ADD_INTERFACE opcode.
Optimized string searching for a single character.
Optimized interpolated strings to use one less opcode.
improved php.ini handling
Added ".htaccess" style user-defined php.ini files support for CGI/FastCGI.
Added support for special [PATH=/opt/httpd/www.example.com/] and [HOST=www.example.com] sections. Directives set in these sections can not be overridden by user-defined ini-files or during runtime.
Added better error reporting for php.ini syntax errors.
Allowed using full path to load modules using "extension" directive.
Allowed "ini-variables" to be used almost everywhere ini php.ini files.
Allowed using alphanumeric/variable indexes in "array" ini options.
Added 3rd optional parameter to parse_ini_file() to specify the scanning mode of INI_SCANNER_NORMAL or INI_SCANNER_RAW. In raw mode option values and section values are treated as-is.
Fixed get_cfg_var() to be able to return "array" ini options.
Added optional parameter to ini_get_all() to only retrieve the current value.
improved windows support
Update all libraries to their latest stable version. .
Added Windows support for stat(), touch(), filemtime(), filesize() and related functions.
Re-added socket_create_pair() for Windows in sockets extension.
Added inet_pton() and inet_ntop() also for Windows platforms.
Added mcrypt_create_iv() for Windows platforms.
Added ACL Cache support on Windows.
Added constants based on Windows' GetVersionEx information. PHP_WINDOWS_VERSION_* and PHP_WINDOWS_NT_*.
Added support for ACL (is_writable, is_readable, reports now correct results) on Windows.
Added support for fnmatch() on Windows.
Added support for time_nanosleep() and time_sleep_until() on Windows.
Added support for symlink(), readlink(), linkinfo() and link() on Windows. They are available only when the running platform supports them.
the GMP extension now relies on MPIR instead of the GMP library.
Added Windows support for stream_socket_pair().
Drop all external dependencies for the core features.
Drastically improve the build procedure :
VC9 or later support
Initial experimental x64 support
MSI installer now supports all recent Windows versions, including Windows 7.
improved and cleaned cgi code
FastCGI is now always enabled and cannot be disabled. See sapi/cgi/CHANGES for more details.
Added CGI SAPI -T option which can be used to measure execution time of script repeated several times.
improved streams
Fixed confusing error message on failure when no errors are logged.
Added stream_supports_lock() function.
Added context parameter for copy() function.
Added "glob://" stream wrapper.
Added "params" as optional parameter for stream_context_create().
Added ability to use stream wrappers in include_path.
Improved DNS API
Added Windows support for dns_check_record(), dns_get_mx(), checkdnsrr() and getmxrr().
Added support for old style DNS functions (supports OSX and FBSD).
Added a new "entries" array in dns_check_record() containing the TXT elements.
improved hash extension
Changed mhash to be a wrapper layer around the hash extension.
Added hash_copy() function.
Added sha224 hash algorithm to the hash extension.
improved imap support (pierre)
Added imap_gc() to clear the imap cache
Added imap_utf8_to_mutf7() and imap_mutf7_to_utf8()
improved mbstring extension
Added "mbstring.http_output_conv_mimetypes" INI directive that allows common non-text types such as "application/xhtml+xml" to be converted by mb_output_handler().
Added new parameter $prepend to spl_autoload_register().
Added SplFixedArray.
Added delaying exceptions in SPL's autoload mechanism.
Added RecursiveTreeIterator.
Added MultipleIterator.
improved zend engine
Added "compact" handler for Zend MM storage.
Added "+" and "*" specifiers to zend_parse_parameters().
Added concept of "delayed early binding" that allows opcode caches to perform class declaration (early and/or run-time binding) in exactly the same order as vanilla PHP.
improved crypt() function
Added Blowfish and extended DES support. .
Made crypt features portable by providing our own implementations for crypt_r and the algorithms which are used when OS does not provide them. PHP implementations are always used for Windows builds.
Deprecated session_register(), session_unregister() and session_is_registered().
Deprecated define_syslog_variables().
Deprecated ereg extension.
added new extensions
Added Enchant extension as a way to access spell checkers.
Added fileinfo extension as replacement for mime_magic extension.
Added intl extension for Internationalization.
Added mysqlnd extension as replacement for libmysql for ext/mysql, mysqli and PDO_mysql.
Added phar extension for handling PHP Archives.
Added SQLite3 extension.
added new date/time functionality
date_parse_from_format(): Parse date/time strings according to a format.
date_create_from_format()/DateTime::createFromFormat(): Create a date/time object by parsing a date/time string according to a given format.
date_get_last_errors()/DateTime::getLastErrors(): Return a list of warnings and errors that were found while parsing a date/time string through:
support for abbreviation and offset based timezone specifiers for the 'e' format specifier, DateTime::__construct(), DateTime::getTimeZone() and DateTimeZone::getName().
support for selectively listing timezone identifiers by continent or country code through timezone_identifiers_list() / DateTimezone::listIdentifiers().
timezone_location_get() / DateTimezone::getLocation() for retrieving location information from timezones.
date_timestamp_set() / DateTime::setTimestamp() to set a Unix timestamp without invoking the date parser.
date_timestamp_get() / DateTime::getTimestamp() to retrieve the Unix timestamp belonging to a date object.
two optional parameters to timezone_transitions_get() / DateTimeZone::getTranstions() to limit the range of transitions being returned.
support for "first/last day of <month>" style texts.
support for date/time strings returned by MS SQL.
support for serialization and unserialization of DateTime objects.
support for diffing date/times through date_diff() / DateTime::diff().
support for adding/subtracting weekdays with strtotime() and DateTime::modify().
DateInterval class to represent the difference between two date/times.
support for parsing ISO intervals for use with DateInterval.
date_add() / DateTime::add(), date_sub() / DateTime::sub() for applying an interval to an existing date/time.
proper support for "this week", "previous week"/"last week" and "next week" phrases so that they actually mean the week and not a seven day period around the current day.
support for "<xth> <weekday> of" and "last <weekday> of" phrases to be used with months - like in "last saturday of februari 2008".
support for "back of <hour>" and "front of <hour>" phrases that are used in Scotland.
DatePeriod class which supports iterating over a DateTime object applying DateInterval on each iteration, up to an end date or limited by maximum number of occurences.
Added compatibility mode in GD, imagerotate, image(filled)ellipse imagefilter, imageconvolution and imagecolormatch are now always enabled.
Added array_replace() and array_replace_recursive() functions.
added reflectionproperty
Added msg_queue_exists() function to sysvmsg extension.
added firebird specific attributes that can be set via pdo
Added gmp_testbit() function.
Added icon format support to getimagesize().
Added LDAP_OPT_NETWORK_TIMEOUT option for ldap_set_option() to allow setting network timeout (FR #42837).
Added optional escape character parameter to fgetcsv().
Added an optional parameter to strstr() and stristr() for retrieval of either the part of haystack before or after first occurrence of needle.
Added xsl->setProfiling() for profiling stylesheets.
Added long-option feature to getopt() and made getopt() available also on win32 systems by adding a common getopt implementation into core.
Added support for optional values, and = as separator, in getopt().
Added lcfirst() function.
Added PREG_BAD_UTF8_OFFSET_ERROR constant.
Added native support for asinh(), acosh(), atanh(), log1p() and expm1().
Added LIBXML_LOADED_VERSION constant (libxml2 version currently used).
Added JSON_FORCE_OBJECT flag to json_encode().
Added timezone_version_get() to retrieve the version of the used timezone database.
Added 'n' flag to fopen to allow passing O_NONBLOCK to the underlying open(2) system call.
Added "dechunk" filter which can decode HTTP responses with chunked transfer-encoding. HTTP streams use this filter automatically in case "Transfer-Encoding: chunked" header is present in response. It's possible to disable this behaviour using "http"=>array("auto_decode"=>0) in stream context.
Added support for CP850 encoding in mbstring extension.
Added stream_cast() and stream_set_options() to user-space stream wrappers, allowing stream_select(), stream_set_blocking(), stream_set_timeout() and stream_set_write_buffer() to work with user-space stream wrappers.
Added header_remove() function.
Added stream_context_get_params() function.
Added optional parameter "new" to sybase_connect().
Added parse_ini_string() function.
Added str_getcsv() function.
Added openssl_random_pseudo_bytes() function.
Added ability to send user defined HTTP headers with SOAP request.
Added concatenation option to bz2.decompress stream filter.
Added support for using compressed connections with PDO_mysql.
Added the ability for json_decode() to take a user specified depth.
Added support for the mysql_stmt_next_result() function from libmysql.
Added function preg_filter() that does grep and replace in one go.
Added system independent realpath() implementation which caches intermediate directories in realpath-cache.
Added optional clear_realpath_cache and filename parameters to clearstatcache().
Added litespeed SAPI module.
Added ext/hash support to ext/session's ID generator.
Added quoted_printable_encode() function.
Added stream_context_set_default() function.
Added optional "is_xhtml" parameter to nl2br() which makes the function output <br> when false and <br /> when true (FR #34381).
Added PHP_MAXPATHLEN constant (maximum length of a path).
Added support for SSH via libssh2 in cURL.
Added support for gray levels PNG image with alpha in GD extension.
Added support for salsa hashing functions in HASH extension.
added table info to pdo
Added mail logging functionality that allows logging of mail sent via mail() function.
Added json_last_error() to return any error information from json_decode().
Added gethostname() to return the current system host name.
Added shm_has_var() function.
Added depth parameter to json_decode() to lower the nesting depth from the maximum if required.
Added pixelation support in imagefilter().
implemented fr #41712 (curl progress callback
Implemented FR #47739 (Missing cURL option do disable IPv6).
Fixed bug #43452 (strings containing a weekday, or a number plus weekday behaved incorrect of the current day-of-week was the same as the one in the phrase).
Fixed bug #43353 (wrong detection of 'data' wrapper causes notice).
fixed bug #43053 (regression
Fixed bug #43045 (SOAP encoding violation on "INF" for type double/float).
fixed bug #42862 (imap toolkit crash
Fixed bug #42855 (dns_get_record() doesn't return all text from TXT record).
Fixed bug #42737 (preg_split('//u') triggers a E_NOTICE with newlines).
Fixed bug #42718 (FILTER_UNSAFE_RAW not applied when configured as default filter).
Fixed bug #42604 ("make test" fails with --with-config-file-scan-dir=path).
fixed bug #42473 (ob_start php
Fixed bug #42318 (problem with nm on AIX, not finding object files).
Fixed bug #42294 (Unified solution for round() based on C99 round).
Fixed bug #42078 (pg_meta_data mix tables metadata from different schemas).
Fixed bug #41293 (Fixed creation of HTTP_RAW_POST_DATA when there is no default post handler).
Fixed bug #41291 (FastCGI does not set SO_REUSEADDR).
Fixed gd build when used with freetype 1.x
Fixed bug #41287 (Namespace functions don't allow xmlns definition to be optional).
Fixed bug #41285 (Improved fix for CVE-2007-1887 to work with non-bundled sqlite2 lib).
Fixed bug #41283 (Bug with deserializing array key that are doubles or floats in wddx).
Fixed bug #41257 (lookupNamespaceURI does not work as expected).
Fixed bug #41236 (Regression in timeout handling of non-blocking SSL connections during reads and writes).
Fixed bug #41134 (zend_ts_hash_clean not thread-safe).
Fixed bug #41097 (ext/soap returning associative array as indexed without using WSDL).
Fixed bug #41004 (minOccurs="0" and null class member variable).
Fixed bug #39542 (Behavior of require/include different to < 5.2.0).
PHP 5.2.2
Released 03 May, 2007
added tidynode
Added --ri switch to CLI which allows to check extension information.
added openbasedir and safemode checks in zip
Added php_pdo_sqlite_external.dll, a version of the PDO SQLite driver that links against an external sqlite3.dll. This provides Windows users to upgrade their sqlite3 version outside of the PHP release cycle.
Added linenumbers to array returned by token_get_all().
Upgraded SQLite 3 to version 3.3.16
Upgraded libraries bundled in the Windows distribution.
c-client to version 2006e
libpq to version 8.2.3
libmysql to version 5.0.37
openssl to version 0.9.8e
Upgraded PCRE to version 7.0
Updated timezone database to version 2007.5.
Fixed commandline handling for CLI and CGI.
Fixed iterator_apply() with a callback using __call().
Fixed possible multi bytes issues in openssl csr parser
Fixed shmop_open() with IPC_CREAT|IPC_EXCL flags on Windows. .
fixed possible leak in ziparchive
Fixed possible relative path issues in zip_open and TS mode (old API)
Fixed zend_llist_remove_tail
Fixed a thread safety issue in gd gif read code
Fixed CVE-2007-1001, GD wbmp used with invalid image size
Fixed unallocated memory access/double free in in array_user_key_compare() (MOPB-24 by Stefan Esser)
Fixed wrong length calculation in unserialize S type (MOPB-29 by Stefan Esser)
Fixed bug #39396 (stream_set_blocking crashes on Win32).
Fixed bug #39351 (relative include fails on Solaris).
Fixed bug #39322 (proc_terminate() destroys process resource).
Fixed bug #38406 (crash when assigning objects to SimpleXML attributes).
Fixed bug #37799 (ftp_ssl_connect() falls back to non-ssl connection).
Fixed bug #36496 (SSL support in imap_open() not working on Windows).
Fixed bug #36226 (Inconsistent handling when passing nillable arrays).
Fixed bug #35872 (Avoid crash caused by object store being referenced during RSHUTDOWN).
Fixed bug #34794 (proc_close() hangs when used with two processes).
Fixed PECL bug #10194 (crash in Oracle client when memory limit reached in the callback).
Fixed substr_compare and substr_count information leak (MOPB-14)
Fixed crash on op-assign where argument is string offset
Fixed bug #38710 (data leakage because of nonexisting boundary checking in statements in mysqli)
Fixed bug #37386 (autocreating element doesn't assign value to first node).
Fixed bug #37013 (server hangs when returning circular object references).
Fixed bug #33664 Console window appears when using exec()
PHP 5.2.1
Released 08 Feb, 2007
moved extensions to pecl
Removed double "wrong parameter count" warnings in various functions.
ext/informix
Changed double-to-string utilities to use BSD implementation.
Updated bundled libcURL to version 7.16.0 in the Windows distro.
Updated timezone database to version 2006.16.
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. .
Improved proc_open(). Now on Windows it can run external commands not through CMD.EXE.
VCWD_REALPATH() is improved to use realpath cache without VIRTUAL_DIR.
ext/bcmath initialization code is moved from request startup to module startup.
Zend Memory Manager Improvements
use HeapAlloc() instead of VirtualAlloc()
use "win32" storage manager on Windows by default
Zip Extension Improvements
Fixed leak in statName and stateIndex
Fixed return setComment
Added addEmptyDir method
Filter Extension Improvements
Fixed a bug when callback function returns a non-modified value.
Added filter support for $_SERVER in cgi/apache2 sapis.
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.
PDO_MySQL Extension Improvements
Enabled buffered queries by default.
Enabled prepared statement emulation by default.
Small optimization of the date() function.
Optimized the internal is_numeric_string() function.
Optimized array functions utilizing php_splice().
Windows related optimizations
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
removed unnecessary ftell() calls
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().
Fixed FastCGI impersonation for persistent connections on Windows.
Fixed wrong signature initialization in imagepng
Fixed ftruncate() with negative size on FreeBSD.
Fixed segfault in RegexIterator when given invalid regex.
Fixed segfault in SplFileObject->openFile()->getPathname().
Fixed segfault in ZTS mode when OCI8 statements containing sub-statements are destroyed in wrong order.
Fixed the validate email filter so that the letter "v" can also be used in the user part of the email address.
Fixed bug #40297 (compile failure in ZTS mode when collections support is missing).
Fixed bug #40285 (The PDO prepare parser goes into an infinite loop in some instances).
Fixed bug #40274 (Sessions fail with numeric root keys).
Fixed bug #40259 (ob_start call many times - memory error).
Fixed bug #36798 (Error parsing named parameters with queries containing high-ascii chars).
Fixed bug #36644 (possible crash in variant_date_from_timestamp()).
Fixed bug #36427 (proc_open() / proc_close() leak handles on windows).
Fixed bug #36392 (wrong number of decimal digits with %e specifier in sprintf).
Fixed bug #36214 (__get method works properly only when conditional operator is used).
Fixed bug #35634 (Erroneous "Class declarations may not be nested" error raised).
Fixed bug #35106 (nested foreach fails when array variable has a reference).
Fixed bug #34564 (COM extension not returning modified "out" argument)
Fixed bug #33734 (Something strange with COM Object).
Fixed bug #33386 (ScriptControl only sees last function of class).
Fixed bug #33282 (Re-assignment by reference does not clear the is_ref flag)
Fixed bug #30074 (apparent symbol table error with extract($blah, EXTR_REFS))
Fixed bug #29840 (is_executable() does not honor safe_mode_exec_dir setting).
PHP 5.2.0
Released 02 Nov, 2006
added soapserver
Added DSA key generation support to openssl_pkey_new(), FR #38731 (marci at balabit dot hu, Tony) SoapServer::setClass() method).
Added support for hexadecimal entity in imagettftext() for the bundled GD.
Added support for httpOnly flag for session extension and cookie setting functions.
Added version specific registry keys to allow different configurations for different php version.
Added "PHPINIDir" Apache directive to apache and apache_hooks SAPIs.
Added an optional boolean parameter to memory_get_usage() and memory_get_peak_usage() to get memory size allocated by emalloc() or real size of memory allocated from system.
Added Zip Archive extension.
Added RFC1867 fileupload processing hook.
Added JSON and Filter extensions.
Added error messages to disk_free_space() and disk_total_space() functions. FR #37971
Added PATHINFO_FILENAME option to pathinfo() to get the filename.
Added array_fill_keys() function.
Added posix_initgroups() function.
Added an optional parameter to parse_url() to allow retrieval of distinct URL components.
Added optional parameter to http_build_query() to allow specification of string separator.
Added image_type_to_extension() function.
Added allow_url_include ini directive to complement allow_url_fopen.
Added automatic module globals management.
added rfc2397 (data
Added new error mode E_RECOVERABLE_ERROR.
Added support for getenv() input filtering.
Added support for constructors in interfaces to force constructor signature checks in implementations.
Added memory_get_peak_usage() function for retrieving peak memory usage of a PHP script.
Added pg_field_table() function.
added domnode
Added gmp_nextprime() function.
Added error_get_last() function.
Removed current working directory from the php.ini search path for CLI and re-added it for other SAPIs (restore to pre 5.1.x behavior).
moved extensions to pecl
ext/filepro
ext/hwapi
Disabled CURLOPT_FOLLOWLOCATION in curl when open_basedir or safe_mode are enabled.
Increased default memory limit to 16 megabytes to accommodate for a more accurate memory utilization measurement.
In addition to path to php.ini, PHPRC now may specify full file name.
Optimized array/HashTable copying.
Optimized zend_try/zend_catch macros by eliminating memcpy(3).
Optimized require_once() and include_once() by eliminating fopen(3) on second usage.
Optimized request shutdown sequence. Restoring ini directives now iterates only over modified directives instead of all.
Changed priority of PHPRC environment variable on win32 to be higher then value from registry.
Changed __toString() to be called wherever applicable.
Changed E_ALL error reporting mode to include E_RECOVERABLE_ERROR.
Changed realpath cache to be disabled when "open_basedir" or "safe_mode" are enabled on per-request basis.
improved snmp extension
Renamed snmp_set_oid_numeric_print() to snmp_set_oid_output_format().
Added 2 new constants: SNMP_OID_OUTPUT_FULL and SNMP_OID_OUTPUT_NUMERIC
Fixed bug #37564 (AES privacy encryption not possible due to net-snmp 5.2 compatibility issue).
improved openssl extension
Added support for all supported algorithms in openssl_verify
Added openssl_pkey_get_details, returns the details of a key
Added x509 v3 extensions support
Added openssl_csr_get_subject() and openssl_csr_get_public_key()
Added 3 new constants OPENSSL_VERSION_TEXT and OPENSSL_VERSION_NUMBER and OPENSSL_KEYTYPE_EC
Added "--enable-malloc-mm" configure option which is enabled by default in debug builds to allow using internal and external memory debuggers.
Allow tweaking the memory manager with ZEND_MM_MEM_TYPE and ZEND_MM_SEG_SIZE environment variables.
For more information: Zend/README.ZEND_MM
Improved safe_mode check for the error_log() function.
Improved the error reporting in SOAP extension on request failure.
Improved crypt() on win32 to be about 10 times faster and to have friendlier license.
Improved performance of the implode() function on associated arrays.
Improved performance of str_replace() when doing 1 char to 1 char or 1 char to many chars replacement.
improved apache2filter sapi
Allowed PHP to be an arbitrary filter in the chain and read the script from the Apache stream.
Added support for apache2filter in the Windows build including binary support for both Apache 2.0.x (php5apache2_filter.dll) and Apache 2.2.x (php5apache2_2_filter.dll).
improved apache2handler sapi
Changed ap_set_content_type() to be called only once.
Added support for Apache 2.2 handler in the Windows distribution.
improved fastcgi sapi
Removed source compatibility with libfcgi.
Optimized access to FastCGI environment variables by using HashTable instead of linear search.
Allowed PHP_FCGI_MAX_REQUESTS=0 that assumes no limit.
Allowed PHP_FCGI_CHILDREN=0 that assumes no worker children.
improved curl
Added control character checks for "open_basedir" and "safe_mode" checks.
Fixed bug #31347 (is_dir and is_file (incorrectly) return true for any string greater then 255 characters).
Fixed bug #30937 (date_sunrise() & date_sunset() don't handle endless day/night at high latitudes).
Fixed bug #30760 (Remove MessageBox on win32 for E_CORE errors if display_startup_error is off).
Fixed bug #29955 (mb_strtoupper() / lower() broken with Turkish encoding).
Fixed bug #28899 (mb_substr() and substr() behave differently when "mbstring.func_overload" is enabled).
Fixed bug #27678 (number_format() crashes with large numbers).
PHP 5.1.1
Released 28 Nov, 2005
disabled native date class to prevent pear
Changed reflection constants be both PHP and class constants.
Added an additional field $frame['object'] to the result array of debug_backtrace() that contains a reference to the respective object when the frame was called from an object.
Fixed bug #35423 (RecursiveDirectoryIterator doesnt appear to recurse with RecursiveFilterIterator).
Fixed bug #35413 (Removed -dev flag from Zend Engine version).
Fixed bug #35406 (eval hangs when evall'ed code ends with comment w/o newline).
fixed bug #35391 (pdo_mysql
Fixed bug #35382 (Comment in end of file produces fatal error).
Fixed bug #35360 (exceptions in interactive mode (php -a) may cause crash).
Fixed bug #35358 (Incorrect error messages for PDO class constants).
Fixed bug #35338 (pdo_pgsql does not handle binary bound params).
Fixed bug #35316 (Application exception trying to create COM object).
Fixed bug #35170 (PHP_AUTH_DIGEST differs under Apache 1.x and 2.x).
PHP 5.1.0
Released 24 Nov, 2005
added optional first parameter to xsltprocessor
Added imageconvolution() function which can be used to apply a custom 3x3 matrix convolution to an image. (Pierre) only allow certain functions to be called from XSLT.
Added the ability to override the autotools executables used by the buildconf script via the PHP_AUTOCONF and PHP_AUTOHEADER environmental variables.
Added several new functions to support the PostgreSQL v3 protocol introduced in PostgreSQL 7.4.
pg_transaction_status() - in-transaction status of a database connection.
pg_query_params() - execution of parameterized queries.
pg_prepare() - prepare named queries.
pg_execute() - execution of named prepared queries.
pg_send_query_params() - async equivalent of pg_query_params().
pg_send_prepare() - async equivalent of pg_prepare().
pg_send_execute() - async equivalent of pg_execute().
pg_result_error_field() - highly detailed error information, most importantly the SQLSTATE error code.
pg_set_error_verbosity() - set verbosity of errors.
Added optional fifth parameter "count" to preg_replace_callback() and preg_replace() to count the number of replacements made. FR #32275.
Added optional third parameter "charlist" to str_word_count() which contains characters to be considered as word part. FR #31560.
Added interface Serializable.
Added pg_field_type_oid() PostgreSQL function.
Added zend_declare_property_...() and zend_update_property_...() API functions for bool, double and binary safe strings.
Added possibility to access INI variables from within .ini file.
Fixed bug #26737 (private/protected properties not serialized when user declared method __sleep() exists). E_NOTICE thrown when __sleep() returns name of non-existing member.
Fixed bug #27722 (Segfault on schema without targetNamespace).
Fixed bug #27719 (mktime issues on and around DST changeover).
Fixed bug #27681 (soap extension fails without HAVE_TM_GMTOFF).
Fixed bug #27641 (Object cloning in ze1_compatibility_mode was reimplemented)
Fixed bug #27628 (Simplify the process of making a POST request via stream context).
Fixed bug #27619 (filters not applied to pre-buffered stream data).
Fixed bug #27519 (Reflection_Function constructor crashes with non-existant function's name).
Fixed bug #27457 (handling of numeric indexes in strtr()).
Fixed bug #27397 (debug_backtrace() not showing function arguments).
Fixed bug #27283 (The last catch statement was sometimes skipped).
Fixed bug #26441 (When __set() returned a value it corrupted it).
Fixed bug #19749 (shouldn't mmap() files larger than memory_limit).
Fixed numerous bugs with the just-in-time auto-global initialization, that could cause $_SERVER, $argv/$argc and other variables not to work properly.
Fixed data corruption with constant assignments to object properties.
Changed __toString() to be called automatically only with print and echo statements.
Replaced the exec_finished hook by the zend_post_deactive hook for extensions. The new hook will be run after the symbol table and destructors are run.
Fixed possible crash when internal get_method() is not defined.
Fixed calling methods using call_user_func() in conjunction with the array("Class","Method") syntax to use the scope of the PHP user function.
Fixed php-cgi to not ignore command-line switches when run in a web context. This fixes our test cases allowing INI with GET sections to work.
Fixed getopt() so it works without $_SERVER.
Added support for PHP 4 style object comparisons which is enabled in ze1_compatiblity_mode.
Added support for PHP 4 style object conversion to long, double, and boolean values which is enabled in ze1_compatibility_mode.
Allow object oriented extensions to overload comparison functions and other operations. Solves problems using SimpleXML values.
Fixed crash when accessing a class constant with a value which in turn is also a constant.
Fixed object's truth value conversion. It is always true unless ze1_compatibility_mode is on in which it behaves like in PHP 4.
Improved out of memory handling in new memory manager.
Fixed crash when an object references itself during destructor call.
Fixed crash in foreach() when iterating over object properties or a method's return values.
Fixed crash when an exception is thrown in a destructor. Such exceptions are now ignored as destruction happens out of context at no definite time.
Fixed crashes in exception handling.
Changed prototype checks so that they aren't done on constructors.
Changed prototype checks to output an E_STRICT message instead of an E_COMPILE_ERROR.
changed iterator
Upgraded bundled oniguruma library to version 2.2.2.
Added mb_list_encoding() to return an array with all mbstring supported encodings.
Added support for more ISO8601 datetime formats in strtotime().
Timezone specifier
Week specifier
Renamed php.ini option "zend2.implicit_clone" to "zend.ze1_compatibility_mode" as it doesn't only affect implicit cloning.
Methods that override parent methods are now subject to prototype checking, and have to be compatible with the method they're overriding - this check is disabled in compatibility mode.
Fixed crash in php_ini_scanned_files() when no additional INI files were actually parsed.
Fixed bug in gdImageFilledRectangle in the bundled GD library, that required x1 < x2 and y1 < y2 for coordinates.
Fixed crash with foreach() and temporary objects($obj->method()->a ...) where method returns a non-referenced object.
Fixed problem preventing startup errors from being displayed.
Fixed start-up problem if both SPL and SimpleXML were enabled. The double initialization of apache 1.3 was causing problems here.
Fixed bug #27606 (Expression must be a modifiable lvalue compiler error).
Fixed bug #27597 (pg_fetch_array not returning false).
fixed bug #27586 (arrayobject
Fixed bug #27537 (Objects pointing to each other segfaults).
Fixed bug #27535 (Problem with object freeing mechanism).
Fixed bug #27504 (Visibility bugs in call_user_function()).
Fixed bug #27338 (memory leak inside tsrm_virtual_cwd.c on win32).
Changed exceptions so that they must now inherit from the built-in Exception class. This allows for a general catch(Exception $e) statement to catch all exceptions.
Added SPL extension.
Added checks for invalid characters in a cookie name and cookie data into set[raw]cookie().
Added support for ++ and += (and similar) to SimpleXML.
Added infrastructure for ++ and += (and similar) to object overloading modules.
Added error message when trying to re-assign to $this variable.
Added support for an interface to extend another interface.
added new pspell functions
pspell_config_dict_dir()
pspell_config_data_dir()
added new interbase functions
ibase_service_attach() and ibase_service_detach().
ibase_backup() and ibase_restore().
ibase_maintain_db(), ibase_db_info() and ibase_server_info().
Added context option "http"/"request_fulluri" to send entire URI in request which is required format for some proxies.
Added optional third parameter 'strict' to array_keys().
Added stream_lock() method to userspace streams interface.
Added xsltprocessor->registerPHPFunctions().
Readded support for using classes before they are declared according to the behavior in PHP 4. This won't work with classes who are using PHP 5 features such as interfaces.
Completely overhauled SimpleXML extension.
Upgraded bundled SQLite library to version 2.8.11.
Improved destructor implementation to always call destructors on clean shutdown. An order of destruction is not guaranteed.
Redesigned exception support. This fixes many bugs in the previous design such as nested try's and problems with overloaded extensions.
Redesigned clone by adding a clone keyword (clone $obj) and copying all properties before __clone() is called. Also allows calling parent __clone function by using parent::__clone().
Fixed interfaces to check for function return-by-reference equality when inheriting and implementing interfaces.
Fixed foreach() to respect property visibility.
Fixed problem with parse error in include() file not stopping PHP's execution.
Fixed var_export() to show public, protected and private modifiers properly.
Fixed problems with longlong values in mysqli.
Fixed class name case preserving of user defined classes.
Fixed bug #27145 (Unmangle private/protected property names before printing them inside error messages).
Fixed bug #27103 (preg_split('//u') incorrectly splits UTF-8 strings into octets).
fixed bug #27042 (spl
Fixed bug #27008 (Every class method can be called as static).
Fixed bug #26938 has problems reading long lines). (Ilia, runekl[at]opoint[dot]com
fixed bug #26947 (ext/dom
Fixed bug #26911 (crash in sqlite extension when fetching data from empty queries).
fixed bug #26844 (ext/mime_magic
Fixed bug #26819 (http_build_query() crashes on NULL output).
Fixed bug #26817 (http_build_query() does not handle private & protected object properties correctly).
Fixed bug #26815 (foreach of (DOM) childnodes crashes when Xinclude is used).
Fixed bug #26796 (SQLite causes crashes with other extensions *connect() calls).
Fixed bug #25494 (array_merge*() allows non-arrays as argument).
Fixed bug #24766 (strange result array from unpack()).
Fixed bug #24729 ($obj = new $className; causes crash when $className is not set).
Fixed bug #24565 (cannot read array elements received via $_REQUEST).
Fixed bug #24445 (get_parent_class() returns different values).
fixed bug #24403 (preg_replace() problem
Fixed bug #24399 (PEAR DB isError crash [instanceof_function fault?]).
Fixed bug #24396 (foreach ($k=>$v), the key $k is missing).
Fixed bug #24279 (__get() crash when no value is returned).
Fixed bug #22367 (undefined variable has a value).
Fixed bug #19859 (allow fast_call_user_function to support __call).
Fixed bug #17997 (Warning when switch() and reference are combined).
Fixed bug #17988 (strtotime failed to parse postgresql timestamp).
Removed the bundled MySQL client library.
Switched to Zend Engine 2, which includes numerous engine level improvements. A full list is available at http://www.php.net/zend-engine-2.php.
added sqlite (http
Includes bundled SQLite library
Enabled by default
completely overhauled xml support
New simplexml extension.
New DOM extension.
New XSL extension.
Moved the old DOM-XML and XSLT extensions to PECL.
ext/xml can now use either libxml2 or expat to parse XML.
Removed bundled expat library.
new php.ini options
"session.hash_function" and "session.hash_bits_per_character".
"mail.force_extra_paramaters".
"register_long_arrays".
Improved the speed of internal functions that use callbacks by 40% due to a new internal fast_call_user_function() function.
improved the streams support
Improved performance of readfile(), fpassthru() and some internal streams operations under Win32.
stream_socket_client() - similar to fsockopen(), but more powerful.
stream_socket_server() - Creates a server socket.
stream_socket_accept() - Accept a client connection.
stream_socket_get_name() - Get local or remote name of socket.
stream_copy_to_stream()
stream_get_line() - Reads either the specified number of bytes or until the ending string is found.
Added context property to userspace streams object.
Added generic crypto interface for streams.
Added lightweight streaming input abstraction to the Zend Engine scanners to provide uniform support for include()'ing data from PHP streams across all platforms.
Added 'string.base64' stream filter.
Renamed stream_register_wrapper() to stream_wrapper_register().
improved the gd extension
imagefilter() - Apply different filters to image.
Antialiased drawing support: o imageantialias() - active antialias o imageline() and imagepolygon() antialias support
Changed the length parameter in fgetss() to be optional.
Changed ini parser to allow for handling of quoted multi-line values.
Changed get_extension_funcs() to return list of the built-in Zend Engine functions if "zend" is specified as the module name.
Changed array_search() to accept also objects as a needle.
Changed ext/mcrypt to require libmcrypt version 2.5.6 or greater.
Changed uniqid() parameters to be optional and allow any prefix length.
Added new iconv functions.
iconv_strlen()
iconv_substr()
iconv_strpos()
iconv_strrpos()
iconv_mime_decode()
iconv_mime_encode()
added misc. new functions
ldap_sasl_bind().
imap_getacl().
file_put_contents().
proc_nice() - Changes priority of the current process.
pcntl_getpriority() and pcntl_setpriority().
idate(), date_sunrise() and date_sunset().
strpbrk() - Searches a string for a list of characters.
get_headers() - Returns headers sent by the server of the specified URL.
str_split() - Breaks down a string into an array of elements based on length.
array_walk_recursive().
array_combine().
Added optional parameter to get_browser() to make it return an array.
Added optional parameter to openssl_sign() to specify the hashing algorithm.
Added optional parameter to sha1(), sha1_file(), md5() and md5_file() which makes them return the digest as binary data.
Added optional parameter to mkdir() to make directory creation recursive.
Added optional parameter to file() which makes the result array not contain the line endings and to skip empty lines.
added new range() functionality
Support for float modifier.
Detection of numeric values inside strings passed as high & low.
Proper handle the situations where high == low.
Added an optional step parameter.
Added encoding detection feature for expat XML parser.
Added missing multibyte (unicode) support and numeric entity support to html_entity_decode().
Added IPv6 support to ext/sockets.
added context options 'method', 'header' and 'content' for "http
Added input filter support. See README.input_filter for more info.
Added a replace count for str_[i]replace(), see bug #8218.
Fixed is_executable() to be available also on Windows.
Fixed dirname() and strip_tags() to be binary-safe.