Changelog

The following changes have been made to functions of bundled extensions.

VersionFunctionDescription
7.4.0array_mergeThis function can now be called without any parameter. Formerly, at least one parameter has been required.
 array_merge_recursiveThis function can now be called without any parameter. Formerly, at least one parameter has been required.
 fgetcsvThe escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
 fputcsvThe escape_char parameter now also accepts an empty string to disable the proprietary escape mechanism.
 idn_to_asciiThe default value of variant is now INTL_IDNA_VARIANT_UTS46 instead of the deprecated INTL_IDNA_VARIANT_2003.
 idn_to_utf8The default value of variant is now INTL_IDNA_VARIANT_UTS46 instead of the deprecated INTL_IDNA_VARIANT_2003.
 imagecropautoThe default value of mode has been changed to IMG_CROP_AUTO. Formerly, the default value has been -1 which corresponds to IMG_CROP_DEFAULT, but passing -1 is now deprecated.
 imagecropautoThe behavior of imagecropauto() in the bundled libgd has been synced with that of system libgd: IMG_CROP_DEFAULT no longer falls back to IMG_CROP_SIDES and threshold-cropping now uses the same algorithm as system libgd.
 imagefilterScatter support (IMG_FILTER_SCATTER) was added.
 str_getcsvThe escape parameter now interprets an empty string as signal to disable the proprietary escape mechanism. Formerly, an empty string was treated like the default parameter value.
 SplFileObject::fgetcsvThe escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
 SplFileObject::fputcsvThe escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
 SplFileObject::getCsvControlThe escape character can now be an empty string.
 SplFileObject::setCsvControlThe escape_char parameter now also accepts an empty string to disable the proprietary escape mechanism.
 SQLite3Stmt::bindParamsql_param now also supports the @param notation.
 SQLite3Stmt::bindValuesql_param now also supports the @param notation.
7.3.0apache_request_headersThis function became available in the FPM SAPI.
 array_pushThis function can now be called with only one parameter. Formerly, at least two parameters have been required.
 array_unshiftThis function can now be called with only one parameter. Formerly, at least two parameters have been required.
 bcmulbcmul now returns numbers with the requested scale. Formerly, the returned numbers may have omitted trailing decimal zeroes.
 bcpowbcpow now returns numbers with the requested scale. Formerly, the returned numbers may have omitted trailing decimal zeroes.
 bcscalebcscale can now be used to get the current scale factor; when used as setter, it now returns the old scale value. Formerly, scale was mandatory, and bcscale always returned TRUE.
 compactcompact now issues an E_NOTICE level error if a given string refers to an unset variable. Formerly, such strings have been silently skipped.
 definecase_insensitive has been deprecated and will be removed in version 8.0.0.
 ftp_fgetThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_fputThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_getThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_nb_fgetThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_nb_fputThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_nb_getThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_nb_putThe mode parameter is now optional. Formerly it has been mandatory.
 ftp_putThe mode parameter is now optional. Formerly it has been mandatory.
 getallheadersThis function became available in the FPM SAPI.
 is_countableis_countable has been added.
 json_decodeJSON_THROW_ON_ERROR options was added.
 json_encodeJSON_THROW_ON_ERROR options was added.
 password_hashSupport for Argon2id passwords using PASSWORD_ARGON2ID was added.
 preg_quoteThe # character is now quoted
 session_get_cookie_paramsThe "samesite" entry was added in the returned array.
 session_set_cookie_paramsAn alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
 setcookieAn alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
 setrawcookieAn alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
 xml_set_external_entity_ref_handlerThe return value of the handler is now also heeded if the extension has been built against libxml. Formerly, the return value has been ignored, and parsing did never stop.
7.3ldap_addSupport for serverctrls added
 ldap_compareSupport for serverctrls added
 ldap_deleteSupport for serverctrls added
 ldap_exopSupport for serverctrls added
 ldap_exop_passwdSupport for serverctrls added
 ldap_listSupport for serverctrls added
 ldap_mod_addSupport for serverctrls added
 ldap_mod_delSupport for serverctrls added
 ldap_mod_replaceSupport for serverctrls added
 ldap_modify_batchSupport for serverctrls added
 ldap_parse_resultSupport for serverctrls added
 ldap_readSupport for serverctrls added
 ldap_renameSupport for serverctrls added
 ldap_searchSupport for serverctrls added
7.2.19, 7.3.6SplFileObject::__toStringChanged from an alias of SplFileObject::current to an alias of SplFileObject::fgets.
7.2.18, 7.3.5substr_compareoffset may now be equal to the length of main_str.
7.2.0array_uniqueIf sort_flags is SORT_STRING, formerly array has been copied and non-unique elements have been removed (without packing the array afterwards), but now a new array is built by adding the unique elements. This can result in different numeric indexes.
 assertUsage of a string as the assertion became deprecated. It now emits an E_DEPRECATED notice when both assert.active and zend.assertions are set to 1.
 bcmoddividend and divisor are no longer truncated to integer, so now the behavior of bcmod follows fmod rather than the % operator.
 bcmodThe scale parameter was added.
 countcount will now yield a warning on invalid countable types passed to the array_or_countable parameter.
 date_parse_from_formatThe zone element of the returned array represents seconds instead of minutes now, and its sign is inverted. For instance -120 is now 7200.
 exif_read_dataThe filename parameter was renamed to stream and now supports both local files or stream resources.
 exif_read_dataSupport for the following EXIF formats were added: Samsung DJI Panasonic Sony Pentax Minolta Sigma/Foveon AGFA Kyocera Ricoh Epson
 exif_thumbnailThe filename parameter was renamed to stream and now supports both local files or stream resources.
 get_classNULL was removed as the default value for object, and is no longer a valid input.
 gettypeClosed resources are now reported as 'resource (closed)'. Previously the returned value for closed resources were 'unknown type'.
 hash_copyAccept and return HashContext instead of resource.
 hash_finalAccept HashContext instead of resource.
 hash_hmacUsage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.
 hash_hmac_fileUsage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.
 hash_initUsage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) with HASH_HMAC was disabled.
 hash_initReturn HashContext instead of resource.
 hash_pbkdf2Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.
 hash_updateAccept HashContext instead of resource.
 hash_update_fileAccept HashContext instead of resource.
 hash_update_streamAccept HashContext instead of resource.
 idn_to_asciiINTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
 idn_to_utf8INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
 imageantialiasimageantialias is now generally available. Formerly it was only available if PHP was compiled with the bundled version of the GD library.
 imagegdimagegd now allows to output truecolor images. Formerly, these have been implicitly converted to palette.
 imagelayereffectAdded IMG_EFFECT_MULTIPLY (requires system libgd >= 2.1.1 or the bundled libgd).
 imagetypesIMG_BMP added.
 is_objectis_object now returns TRUE for unserialized objects without a class definition (class of __PHP_Incomplete_Class). Previously FALSE was returned.
 json_decodeJSON_INVALID_UTF8_IGNORE, and JSON_INVALID_UTF8_SUBSTITUTE options were added.
 json_encodeJSON_INVALID_UTF8_IGNORE, and JSON_INVALID_UTF8_SUBSTITUTE options were added.
 mailThe additional_headers parameter now also accepts an array.
 mb_send_mailThe additional_headers parameter now also accepts an array.
 mt_randmt_rand has received a bug fix for a modulo bias bug. This means that sequences generated with a specific seed may differ from PHP 7.1 on 64-bit machines.
 number_formatnumber_format was changed to not being able to return -0, previously -0 could be returned for cases like where number would be -0.01.
 openssl_pkcs7_verifyThe p7bfilename parameter was added.
 packfloat and double types supports both Big Endian and Little Endian.
 parse_strUsage of parse_str without a second parameter now emits an E_DEPRECATED notice.
 password_hashSupport for Argon2i passwords using PASSWORD_ARGON2I was added.
 preg_matchThe PREG_UNMATCHED_AS_NULL is now supported for the $flags parameter.
 preg_match_allThe PREG_UNMATCHED_AS_NULL is now supported for the $flags parameter.
 proc_niceThis function is now available on Windows.
 randrand has received a bug fix for a modulo bias bug. This means that sequences generated with a specific seed may differ from PHP 7.1 on 64-bit machines.
 read_exif_dataThis function alias was deprecated.
 session_abortThe return type of this function is bool now. Formerly, it has been void.
 session_module_nameIt is now explicitly forbidden to set the module name to "user". Formerly, this has been silently ignored.
 session_namesession_name checks session status, previously it only checked cookie status. Therefore, older session_name allows to call session_name after session_start which may crash PHP and may result in misbehaviors.
 session_resetThe return type of this function is bool now. Formerly, it has been void.
 session_set_cookie_paramsReturns TRUE on success or FALSE on failure. Formerly the function returned void.
 session_unsetThe return type of this function is bool now. Formerly, it has been void.
 session_write_closeThe return type of this function is bool now. Formerly, it has been void.
 set_error_handlererrcontext became deprecated. Usage of this parameter now emits an E_DEPRECATED notice.
 unpackfloat and double types supports both Big Endian and Little Endian.
 utf8_decodeThis function has been moved to the core of PHP, and therefore lifting the requirement on the XML extension for this function to be available.
 utf8_encodeThis function has been moved to the core of PHP, and therefore lifting the requirement on the XML extension for this function to be available.
 PDOStatement::debugDumpParamsPDOStatement::debugDumpParams now returns the SQL sent to the database, including the full, raw query (including the replaced placeholders with their bounded values). Note, that this will only be available if emulated prepared statements are turned on.
 SQLite3::openBlobThe flags parameter has been added, allowing to write BLOBs; formerly only reading was supported.
7.1.24, 7.2.12, 7.3.0xml_parser_get_optionoptions now supports XML_OPTION_SKIP_TAGSTART and XML_OPTION_SKIP_WHITE.
7.1.5IntlDateFormatter::formatSupport for providing general DateTimeInterface objects to the value parameter was added. Formerly, only proper DateTime objects were supported.
7.1.4PDO::sqliteCreateFunctionThe flags parameter has been added.
 SQLite3::createFunctionThe flags parameter has been added.
7.1.0DateInterval::formatThe F and f format characters were added.
 DateTime::setTimeThe microseconds parameter was added.
 array_randThe internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.
 curl_multi_setoptIntroduced CURLMOPT_PUSHFUNCTION.
 exif_imagetypeAdded WebP support.
 file_get_contentsSupport for negative offsets has been added.
 get_headersThe context parameter was added.
 getenvThe varname can now be omitted to retrieve an associative array of all environment variables.
 getimagesizeAdded WebP support.
 getoptAdded the optind parameter.
 grapheme_extractSupport for negative starts has been added.
 grapheme_striposSupport for negative offsets has been added.
 grapheme_strposSupport for negative offsets has been added.
 hash_algosSupport for sha512/224, sha512/256, sha3-224, sha3-256, sha3-384 and sha3-512 has been added.
 iconv_strposSupport for negative offsets has been added.
 json_decodeAn empty JSON key ("") can be encoded to the empty object property instead of using a key with value _empty_.
 json_encodeJSON_UNESCAPED_LINE_TERMINATORS options was added.
 json_encodeserialize_precision is used instead of precision when encoding double values.
 listIt is now possible to specify keys in list. This enables destructuring of arrays with non-integer or non-sequential keys.
 long2ipThe parameter type of proper_address has been changed from string to integer.
 mb_eregmb_ereg will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.
 mb_ereg_replaceThe e modifier has been deprecated.
 mb_ereg_search_setposSupport for negative positions has been added.
 mb_eregimb_eregi will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.
 mb_eregi_replaceThe e modifier has been deprecated.
 mb_strimwidthSupport for negative starts and widths has been added.
 mb_striposSupport for negative offsets has been added.
 mb_strposSupport for negative offsets has been added.
 mt_randrand has been made an alias of mt_rand.
 mt_randmt_rand has been updated to use the fixed, correct, version of the Mersenne Twister algorithm. To fall back to the old behaviour, use mt_srand with MT_RAND_PHP as the second parameter.
 mt_srandmt_rand has been updated to use the fixed, correct, version of the Mersenne Twister algorithm. To fall back to the old behaviour, use mt_srand with MT_RAND_PHP as the second parameter.
 mt_srandsrand has been made an alias of mt_srand.
 openssl_csr_newconfigargs now also supports curve_name.
 openssl_decryptThe tag and aad parameters were added.
 openssl_encryptThe tag, aad and tag_length parameters were added.
 openssl_pkey_newThe curve_name configarg was added to make it possible to create EC keys.
 output_add_rewrite_varBefore PHP 7.1.0, rewrite vars set by output_add_rewrite_var use the same Session module trans sid output buffer. Since PHP 7.1.0, dedicated output buffer is used, url_rewriter.tags is used solely for output functions, url_rewriter.hosts is added.
 output_reset_rewrite_varsBefore PHP 7.1.0, rewrite vars set by output_add_rewrite_var use the same Session module trans sid output buffer. Since PHP 7.1.0, dedicated output buffer is used and output_reset_rewrite_vars only removes rewrite vars defined by output_add_rewrite_var.
 pcntl_signalAs of PHP 7.1.0 the handler callback is given a second argument containing the signinfo of the specific signal. This data is only supplied if the operating system has the signinfo_t structure. If the OS does not implement siginfo_t NULL is supplied.
 pcntl_signal_get_handlerpcntl_signal_get_handler has been added.
 pg_fetch_allThe result_type parameter was added.
 pg_last_noticeThe option parameter was added.
 pg_selectThe result_type parameter was added.
 randrand has been made an alias of mt_rand.
 session_startsession_start now returns FALSE and no longer initializes $_SESSION when it failed to start the session.
 shuffleThe internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.
 srandsrand has been made an alias of mt_srand.
 str_shuffleThe internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.
 striposSupport for negative offsets has been added.
 strposSupport for negative offsets has been added.
 substr_countSupport for negative offsets and lengths has been added. length may also be 0 now.
 unpackThe optional offset has been added.
 unserializeThe allowed_classes element of options) is now strictly typed, i.e. if anything other than an array or a boolean is given, unserialize returns FALSE and issues an E_WARNING.
7.1DateTime::__constructFrom now on microseconds are filled with actual value. Not with '00000'.
7.0.16, 7.1.2dns_get_recordAdded support for CAA record type.
 fopenThe 'e' option was added.
7.0.15, 7.1.1get_defined_functionsThe exclude_disabled parameter has been added.
7.0.15,7.1.1packThe "e", "E", "g" and "G" codes were added to enable byte order support for float and double.
7.0.11iconv_substrIf str is equal to offset characters long, an empty string will be returned. Prior to this version, FALSE was returned in this case.
7.0.10SQLite3::__constructThe filename can now be empty to use a private, temporary on-disk database.
7.0.7curl_multi_setoptIntroduced CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS, CURLMOPT_MAX_PIPELINE_LENGTH and CURLMOPT_MAX_TOTAL_CONNECTIONS.
 curl_setoptIntroduced CURL_HTTP_VERSION_2, CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, CURL_HTTP_VERSION_2TLS, CURL_REDIR_POST_301, CURL_REDIR_POST_302, CURL_REDIR_POST_303, CURL_REDIR_POST_ALL, CURL_VERSION_KERBEROS5, CURL_VERSION_PSL, CURL_VERSION_UNIX_SOCKETS, CURLAUTH_NEGOTIATE, CURLAUTH_NTLM_WB, CURLFTP_CREATE_DIR, CURLFTP_CREATE_DIR_NONE, CURLFTP_CREATE_DIR_RETRY, CURLHEADER_SEPARATE, CURLHEADER_UNIFIED, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS, CURLMOPT_MAX_PIPELINE_LENGTH, CURLMOPT_MAX_TOTAL_CONNECTIONS, CURLOPT_CONNECT_TO, CURLOPT_DEFAULT_PROTOCOL, CURLOPT_DNS_INTERFACE, CURLOPT_DNS_LOCAL_IP4, CURLOPT_DNS_LOCAL_IP6, CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOPT_HEADEROPT, CURLOPT_LOGIN_OPTIONS, CURLOPT_PATH_AS_IS, CURLOPT_PINNEDPUBLICKEY, CURLOPT_PIPEWAIT, CURLOPT_PROXY_SERVICE_NAME, CURLOPT_PROXYHEADER, CURLOPT_SASL_IR, CURLOPT_SERVICE_NAME, CURLOPT_SSL_ENABLE_ALPN, CURLOPT_SSL_ENABLE_NPN, CURLOPT_SSL_FALSESTART, CURLOPT_SSL_VERIFYSTATUS, CURLOPT_STREAM_WEIGHT, CURLOPT_TCP_FASTOPEN, CURLOPT_TFTP_NO_OPTIONS, CURLOPT_UNIX_SOCKET_PATH, CURLOPT_XOAUTH2_BEARER, CURLPROTO_SMB, CURLPROTO_SMBS, CURLPROXY_HTTP_1_0, CURLSSH_AUTH_AGENT and CURLSSLOPT_NO_REVOKE.
7.0.0array_columnAdded the ability for the input parameter to be an array of objects.
 assertassert is now a language construct and not a function. assertion can now be an expression. The second parameter is now interpreted either as an exception (if a Throwable object is given), or as the description supported from PHP 5.4.8 onwards.
 curl_setoptSupport for disabling the CURLOPT_SAFE_UPLOAD option has been removed. All curl file uploads must use CURLFile.
 currentarray is now always passed by value. Prior to this version, it was passed by reference if possible, and by value otherwise.
 definearray values are allowed.
 dirnameAdded the optional levels parameter.
 dldl is disabled in PHP-FPM.
 getrusageThis function is now supported on Windows.
 gmmktimeis_dst parameter has been removed.
 imagepsbboxT1Lib support was removed from PHP, thus this function was removed.
 imagepsencodefontT1Lib support was removed from PHP, thus this function was removed.
 imagepsextendfontT1Lib support was removed from PHP, thus this function was removed.
 imagepsfreefontT1Lib support was removed from PHP, thus this function was removed.
 imagepsloadfontT1Lib support was removed from PHP, thus this function was removed.
 imagepsslantfontT1Lib support was removed from PHP, thus this function was removed.
 imagepstextT1Lib support was removed from PHP, thus this function was removed.
 is_numericStrings in hexadecimal (e.g. 0xf4c3b00c) notation are no longer regarded as numeric strings, i.e. is_numeric returns FALSE now.
 json_decodeAn empty PHP string or value that after casting to string is an empty string (NULL, FALSE) results in JSON syntax error.
 json_decodeRejected RFC 7159 incompatible number formats - top level (07, 0xff, .1, -.1) and all levels ([1.], [1.e1])
 keyarray is now always passed by value. Prior to this version, it was passed by reference if possible, and by value otherwise.
 listThe order that the assignment operations are performed in has changed.
 listlist expressions can no longer be completely empty.
 listStrings can no longer be unpacked.
 mktimeis_dst parameter has been removed.
 ob_startIn case ob_start is used inside an output buffer callback, this function will no longer issue an E_ERROR but instead an E_RECOVERABLE_ERROR, allowing custom error handlers to catch such errors.
 openssl_openThe iv has been added.
 openssl_sealThe iv has been added.
 parse_ini_fileHash marks (#) are no longer recognized as comments.
 preg_replaceSupport for the /e modifier has been removed. Use preg_replace_callback instead.
 session_regenerate_idsession_regenerate_id saves old session data before closing.
 session_set_save_handlerAdded the optional validate_sid and update_timestamp parameters.
 session_startThe options parameter was added.
 set_exception_handlerThe type of parameter passed into exception_handler changed from Exception to Throwable
 setlocaleSupport for the category parameter passed as a string has been removed. Only LC_* constants can be used as of this version.
 shmop_closeThe type of shmid has been changed from int to resource.
 shmop_deleteThe type of shmid has been changed from int to resource.
 shmop_openThe return type of shmop_open has been changed from int to resource.
 shmop_readThe type of shmid has been changed from int to resource.
 shmop_sizeThe type of shmid has been changed from int to resource.
 shmop_writeThe type of shmid has been changed from int to resource.
 substrIf string is equal to start characters long, an empty string will be returned. Prior to this version, FALSE was returned in this case.
 token_get_allAdded the optional flags parameter along with the TOKEN_PARSE flag.
 unserializeThe options parameter has been added.
 IntlDateFormatter::setTimeZoneIdThis function has been removed.
5.6.25, 7.0.10imagetypesIMG_WEBP added.
 SplFileObject::getCsvControlAdded the escape character to the returned array.
5.6.16mysqli::real_connectAdded the MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT flag for MySQL Native Driver
5.6.12gd_infoWebP Support added.
5.6.6json_encodeJSON_PRESERVE_ZERO_FRACTION options was added.
5.6.5cryptWhen the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.6 would incorrectly return a DES hash.
5.6.3packThe "q", "Q", "J" and "P" codes were added to enable working with 64-bit numbers.
5.6.1parse_ini_fileAdded new INI_SCANNER_TYPED mode.
 sem_acquireThe $nowait parameter was added.
5.6.0array_fillnum may now be zero. Previously, num was required to be greater than zero.
 array_filterAdded optional flag parameter and constants ARRAY_FILTER_USE_KEY and ARRAY_FILTER_USE_BOTH
 cryptRaise E_NOTICE security warning if salt is omitted.
 curl_setoptRemoved CURLOPT_CLOSEPOLICY and associated values.
 curl_setoptCURLOPT_SAFE_UPLOAD is now TRUE by default.
 hash_algosSupport for gost-crypto was added. This implements the GOST hash function using the CryptoPro S-box tables as specified by RFC 4357, section 11.2.
 html_entity_decodeThe default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 htmlentitiesThe default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 htmlspecialcharsThe default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 json_decodeInvalid non-lowercased variants of the true, false and null literals are no longer accepted as valid input, and will generate warnings.
 mb_regex_encodingDefault encoding is changed to UTF-8. It was EUC-JP Previously.
 mcrypt_create_ivMCRYPT_DEV_URANDOM is now the default value of source.
 mcrypt_decryptInvalid key and iv sizes are no longer accepted. mcrypt_decrypt will now throw a warning and return FALSE if the inputs are invalid. Previously keys and IVs were padded with '\0' bytes to the next valid size.
 mcrypt_encryptInvalid key and iv sizes are no longer accepted. mcrypt_encrypt will now throw a warning and return FALSE if the inputs are invalid. Previously keys and IVs were padded with '\0' bytes to the next valid size.
 pg_connectSupport for giving the PGSQL_CONNECT_ASYNC constant as the connect_type was added.
 pg_convertNo longer experimental. Boolean/NULL data types are supported. Unknown/unsupported data types are escaped without validation. pg_convert can be used with any data types.
 pg_deleteNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 pg_insertNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 pg_insertUnless PGSQL_DML_STRING is passed, the function now returns the connection resource instead of TRUE on success.
 pg_lo_seekAdded PostgreSQL 9.3's 64bit large object support. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
 pg_lo_tellAdded PostgreSQL 9.3's 64bit large object support. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
 pg_lo_truncateAdded truncate function. It supports PostgreSQL 9.3's 64bit large object. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
 pg_meta_dataNo longer experimental. Added "is enum" as default attribute. extended flag is added.
 pg_selectNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 pg_updateNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 stream_socket_enable_cryptoIntroduce STREAM_CRYPTO_METHOD_ANY_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, STREAM_CRYPTO_METHOD_ANY_SERVER, STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, STREAM_CRYPTO_METHOD_TLSv1_2_SERVER.
 stream_socket_enable_cryptoThe crypto_type is now optional.
 unserializeManipulating the serialised data by replacing C: with O: to force object instantiation without calling the constructor will now fail.
 ReflectionClass::newInstanceWithoutConstructorAll internal classes can now be instantiated except for those declared final.
 XMLReader::getAttributeNoXMLReader::getAttributeNo now returns NULL if the attribute doesn't exist.
 XMLReader::getAttributeNsXMLReader::getAttributeNS now returns NULL if the attribute doesn't exist.
5.5.38, 5.6.24, 7.0.9getenvThe local_only parameter has been added.
5.5.22, 5.6.6flockAdded support for the wouldblock parameter on Windows.
 SplFileObject::flockAdded support for the wouldblock parameter on Windows.
5.5.21, 5.6.5SplFileObject::fputcsvAdded the escape parameter.
5.5.21cryptWhen the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.5 (and earlier branches) would incorrectly return a DES hash.
5.5.19/5.6.3imagescaleThe calculation of the height if new_height was negative or omitted was fixed; prior to these versions, the aspect ratio was not maintained correctly.
5.5.19, 5.6.3DateTimeZone::getOffsetdatetime type changed to DateTimeInterface. Previously, DateTime.
5.5.11substr_comparelength may now be 0.
5.5.10DateTimeZone::__constructThe timezone parameter accepts offset values.
5.5.8DatePeriod::__constructend type changed to DateTimeInterface. Previously, DateTime.
5.5.7apache_request_headersThis function became available in the CLI server.
 apache_response_headersThis function became available in the CLI server.
 getallheadersThis function became available in the CLI server.
5.5.4fputcsvThe escape_char parameter was added
5.5.3/5.4.19pg_deleteDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
 pg_insertDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
 pg_selectDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
 pg_updateDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
5.5.2DOMDocument::schemaValidateAdded the flags parameter
 DOMDocument::schemaValidateSourceAdded the flags parameter
5.5.1hex2binA warning is thrown if the input string is invalid hexadecimal string.
 pg_unescape_byteaA warning is thrown if the input string is invalid.
 session_set_save_handlerAdded the optional create_sid parameter.
5.5.0/PECL 3.0.0IntlDateFormatter::createAn IntlCalendar object is allowed for calendar. Objects of type IntlTimeZone and DateTimeZone are allowed for timezone. Invalid timezone identifiers (including empty strings) are no longer allowed for timezone. If NULL is given for timezone, the timezone identifier given by date_default_timezone_get will be used instead of ICUʼs default.
 IntlDateFormatter::formatSupport for providing IntlCalendar objects to the value parameter was added.
 IntlDateFormatter::setCalendarIt became possible to pass an IntlCalendar object.
5.5.0DatePeriod::__constructstart type changed to DateTimeInterface. Previously, DateTime.
 curl_getinfoIntroduced CURLINFO_RESPONSE_CODE, CURLINFO_HTTP_CONNECTCODE, CURLINFO_HTTPAUTH_AVAIL, CURLINFO_PROXYAUTH_AVAIL, CURLINFO_OS_ERRNO, CURLINFO_NUM_CONNECTS, CURLINFO_SSL_ENGINES, CURLINFO_COOKIELIST, CURLINFO_FTP_ENTRY_PATH, CURLINFO_APPCONNECT_TIME, CURLINFO_CONDITION_UNMET, CURLINFO_RTSP_CLIENT_CSEQ, CURLINFO_RTSP_CSEQ_RECV, CURLINFO_RTSP_SERVER_CSEQ and CURLINFO_RTSP_SESSION_ID.
 curl_setoptAdded the cURL resource as the first argument to the CURLOPT_PROGRESSFUNCTION callback.
 curl_setoptIntroduced CURLOPT_SHARE.
 emptyempty now supports expressions, rather than only variables.
 imagerotateThis function is now affected by the interpolation method set by the imagesetinterpolation function.
 imagerotateThe ignore_transparent is now silently ignored.
 ip2longPrior to this version, on Windows ip2long would sometimes return a valid number even if passed a value which was not an (IPv4) Internet Protocol dotted address.
 iterator_to_arrayiterator_to_array gained support for key types other than integer and string when the use_keys parameter is enabled.
 json_encodedepth parameter was added.
 json_encodeJSON_PARTIAL_OUTPUT_ON_ERROR options was added.
 json_encodeThe return value on failure was changed from null string to FALSE.
 mysql_connectThis function will generate an E_DEPRECATED error.
 mysql_db_nameThe mysql_list_dbs function is deprecated, and emits an E_DEPRECATED level error.
 mysql_pconnectThis function will generate an E_DEPRECATED error.
 mysql_tablenameThe mysql_tablename function is deprecated, and emits an E_DEPRECATED level error.
 packThe "Z" code was added with equivalent functionality to "a" for Perl compatibility.
 php_logo_guidphp_logo_guid has been removed from PHP.
 phpinfoLogo GUIDs were replaced with data URIs, and so turning off expose_php now has no effect on the result of phpinfo(). Credits are also now embedded within the output itself instead of linked.
 preg_replaceThe /e modifier is deprecated. Use preg_replace_callback instead. See the PREG_REPLACE_EVAL documentation for additional information about security risks.
 set_error_handlererror_handler now accepts NULL.
 set_exception_handlerPreviously, if NULL was passed then this function returned TRUE. It returns the previous handler since PHP 5.5.0.
 setcookieA Max-Age attribute is now included in the Set-Cookie header sent to the client.
 setrawcookieA Max-Age attribute is now included in the Set-Cookie header sent to the client.
 unpackChanges were made to bring this function into line with Perl: The "a" code now retains trailing NULL bytes. The "A" code now strips all trailing ASCII whitespace (spaces, tabs, newlines, carriage returns, and NULL bytes). The "Z" code was added for NULL-padded strings, and removes trailing NULL bytes.
 zend_logo_guidzend_logo_guid has been removed from PHP.
 IntlDateFormatter::setTimeZoneIdThis function has been deprecated.
 mysqli::commitAdded flags and name parameters.
 mysqli::optionsThe MYSQLI_SERVER_PUBLIC_KEY and MYSQLI_SERVER_PUBLIC_KEY options were added.
 mysqli::rollbackAdded flags and name parameters.
 SoapClient::SoapClientNew ssl_method option.
5.4.43, 5.5.27, 5.6.11escapeshellargExclamation marks are replaced by spaces.
 escapeshellcmdExclamation marks are replaced by spaces.
5.4.42, 5.5.27mailHeader injection protection has been added for the additional_headers parameter. This means that multiple consecutive newlines are no longer allowed.
5.4.32, 5.5.16ucwordsAdded the delimiters parameter.
5.4.8assertThe description parameter was added. The description is also now provided to a callback function in ASSERT_CALLBACK mode as the fourth argument.
 mb_strcutPassing NULL as length extracts all bytes to the end of the string. Prior to this version NULL was treated the same as 0.
 mb_substrPassing NULL as length extracts all characters to the end of the string. Prior to this version NULL was treated the same as 0.
5.4.7curl_getinfoIntroduced CURLINFO_PRIMARY_IP, CURLINFO_PRIMARY_PORT, CURLINFO_LOCAL_IP and CURLINFO_LOCAL_PORT.
 parse_urlFixed host recognition when scheme is omitted and a leading component separator is present.
5.4.4hex2binA warning is thrown if the input string is of odd length. In PHP 5.4.0 the string was silently accepted, but the last byte was truncated.
5.4.0/PECL 2.0.0b1idn_to_asciiAdded the parameters variant and idna_info; UTS #46 support (requires ICU ≥ 4.6).
 idn_to_utf8Added the parameters variant and idna_info; UTS #46 support (requires ICU ≥ 4.6).
5.4.0DOMDocument::loadHTMLAdded options parameter.
 DOMDocument::loadHTMLFileAdded options parameter.
 apache_child_terminateThis function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
 apache_request_headersThis function became available under FastCGI. Previously, it was supported when PHP was installed as an Apache module or by the NSAPI server module in Netscape/iPlanet/SunONE webservers.
 apache_response_headersThis function became available under FastCGI. Previously, it was supported when PHP was installed as an Apache module or by the NSAPI server module in Netscape/iPlanet/SunONE webservers.
 array_combinePrevious versions issued E_WARNING and returned FALSE for empty arrays.
 array_multisortThe SORT_NATURAL and SORT_FLAG_CASE were added to array1_sort_flags as possible sort flags.
 date_default_timezone_getThe TZ environment variable is no longer used to guess the timezone.
 date_default_timezone_getThe timezone is no longer guessed from information available through the operating system as the guessed timezone can not be relied on.
 debug_backtraceAdded the optional parameter limit.
 debug_print_backtraceAdded the optional parameter limit.
 define_syslog_variablesThis function was removed from PHP.
 dns_get_recordAdded raw parameter.
 emptyChecking non-numeric offsets of strings returns TRUE.
 error_reportingE_STRICT became part of E_ALL.
 filter_input_arrayAdded add_empty parameter.
 filter_var_arrayAdded add_empty parameter.
 get_html_translation_tableThe constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 get_html_translation_tableThe default value for the encoding parameter was changed to UTF-8.
 get_magic_quotes_gpcAlways returns FALSE because the magic quotes feature was removed from PHP.
 get_magic_quotes_runtimeAlways returns FALSE because the magic quotes feature was removed from PHP.
 getallheadersThis function became available under FastCGI. Previously, it was supported when PHP was installed as an Apache module or by the NSAPI server module in Netscape/iPlanet/SunONE webservers.
 gzcompressAdded encoding parameter.
 gzdeflateAdded encoding parameter.
 gzencodeFORCE_DEFLATE now generates RFC 1950 compliant output.
 hashThe tiger algorithm now uses big-endian byte ordering. See also example below.
 hash_algosSupport for joaat, fnv132 and fnv164 was added. Support for Salsa10 and Salsa20 was removed.
 html_entity_decodeThe constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 html_entity_decodeDefault encoding changed from ISO-8859-1 to UTF-8.
 htmlentitiesThe constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 htmlentitiesThe default value for the encoding parameter was changed to UTF-8.
 htmlspecialcharsThe default value for the encoding parameter was changed to UTF-8.
 htmlspecialcharsThe constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 htmlspecialchars_decodeThe constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 http_build_queryThe enc_type parameter was added.
 iconvSince this version, the function returns FALSE on illegal characters, unless //IGNORE is specified in output charset. Before, it returned partial output string.
 imagecolorsetThe alpha parameter was added.
 imagegdAdded support for passing a stream resource to to.
 imagegd2Added support for passing a stream resource to to.
 imagegifAdded support for passing a stream resource to to.
 imagejpegDisallowed passing an empty string to to to skip this argument.
 imagejpegAdded support for passing a stream resource to to.
 imagepngAdded support for passing a stream resource to to.
 imagewbmpAdded support for passing a stream resource to to.
 issetChecking non-numeric offsets of strings now returns FALSE.
 json_decodeThe options parameter was added.
 json_decodeJSON_BIGINT_AS_STRING, and JSON_OBJECT_AS_ARRAY options were added.
 json_encodeJSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, and JSON_UNESCAPED_UNICODE options were added.
 mb_decode_numericentityAdded is_hex parameter.
 mb_encode_numericentityAdded is_hex parameter.
 mysqli_get_cache_statsThe mysqli_get_cache_stats was removed.
 number_formatThis function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.
 ob_startThe third parameter of ob_start changed from a boolean parameter called erase (which, if set to FALSE, would prevent the output buffer from being deleted until the script finished executing) to an integer parameter called flags. Unfortunately, this results in an API compatibility break for code written prior to PHP 5.4.0 that uses the third parameter. See the flags example for an example of how to handle this with code that needs to be compatible with both.
 ob_startA chunk size of 1 now results in chunks of 1 byte being sent to the output buffer.
 openssl_decryptThe raw_output was changed to options.
 openssl_encryptThe raw_output was changed to options.
 preg_match_allThe matches parameter became optional.
 scandirsorting_order constants were added. Any nonzero value caused descending order in previous versions. So for all PHP versions, use 0 for ascending order, and 1 for descending order. An option for SCANDIR_SORT_NONE behavior did not exist prior to PHP 5.4.0.
 session_set_save_handlerAdded SessionHandlerInterface for implementing session handlers and SessionHandler to expose internal PHP session handlers.
 snmp_set_valueretrievalConstants SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY may be combined with SNMP_VALUE_OBJECT resulting different way of representing contents of value array element in return value of GET-function. If no SNMP_VALUE_{PLAIN,LIBRARY} constant is accompanying SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used. Prior to 5.4.0 SNMP_VALUE_OBJECT effecively meant SNMP_VALUE_OBJECT|SNMP_VALUE_PLAIN.
 sortAdded support for SORT_NATURAL and SORT_FLAG_CASE as sort_flags
 PDOStatement::getColumnMetaPDO_DBLIB driver support added
 Phar::setStubAdded len parameter.
 PharData::setStubAdded len parameter.
 SimpleXMLElement::getDocNamespacesAdded from_root parameter.
 SoapClient::SoapClientNew keep_alive option.
5.4grapheme_substrIf length is given and positive and the argument string is shorter than the specified length, all the rest of the string according to start parameter is returned. Previously, FALSE was returned.
5.3.19imagecreatefromxpmimagecreatefromxpm is available on Windows.
5.3.9DateTime::createFromFormatThe + format specifier has been added.
 dldl is enabled in PHP-FPM, albeit discouraged.
 is_aAdded allow_string parameter
 is_subclass_ofAdded allow_string parameter
5.3.7cryptAdded $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
 curl_getinfoIntroduced CURLINFO_REDIRECT_URL.
 is_subclass_ofAdded support for class_name to work with interfaces
5.3.6DateTime::modifyAbsolute date/time statements now take effect. Previously, only relative parts were used.
 DOMDocument::saveHTMLThe node parameter was added.
 array_productThe product of an empty array is now 1, when before this function would return 0 for an empty array.
 debug_backtraceThe parameter provide_object changed to options and additional option DEBUG_BACKTRACE_IGNORE_ARGS is added.
 debug_print_backtraceAdded the optional parameter options.
 preg_matchReturns FALSE if offset is higher than subject length.
 preg_match_allReturns FALSE if offset is higher than subject length.
 PDO_MYSQL DSNPrior to version 5.3.6, charset was ignored.
5.3.4copyChanged the context parameter to actually have an effect. Previously, any context was ignored.
 get_html_translation_tableThe encoding parameter was added.
 mt_randIssues an E_WARNING and returns FALSE if max < min.
 rawurlencodeTilde characters are no longer encoded when rawurlencode is used with EBCDIC strings.
 sleepBefore PHP 5.3.4, on Windows, sleep always returns NULL when sleep has occurred, regardless of whether the sleep was interrupted or not.
 strip_tagsstrip_tags ignores self-closing XHTML tags in allowable_tags.
 IntlDateFormatter::formatSupport for providing DateTime objects to the value parameter was added.
 mysqli_driver::$report_modeChanging the reporting mode is now be per-request, rather than per-process.
5.3.3DOMXPath::evaluateThe registerNodeNS parameter was added.
 DOMXPath::queryThe registerNodeNS parameter was added.
 imap_fetch_overviewAdd the udate property.
 json_encodeJSON_NUMERIC_CHECK options was added.
 ldap_sasl_bindSupport on Windows was added.
 openssl_decryptThe iv parameter was added.
 openssl_encryptThe iv parameter was added.
 parse_urlRemoved the E_WARNING that was emitted when URL parsing failed.
5.3.2 (PECL OCI8 1.4)oci_set_prefetchBefore this release, rows must be >= 1.
5.3.2cryptAdded SHA-256 and SHA-512 crypt based on Ulrich Drepper's implementation.
 cryptFixed Blowfish behaviour on invalid rounds to return "failure" string ("*0" or "*1"), instead of falling back to DES.
 flockThe automatic unlocking when the file's resource handle is closed was removed. Unlocking now always has to be done manually.
 gmp_initThe base was extended from 2 to 36, to 2 to 62 and -2 to -36.
 gmp_strvalThe base was extended from 2 to 36, to 2 to 62 and -2 to -36.
 imap_appendAdded INTERNALDATE support to imap_append.
 imap_openparams added
 SplFileObject::flockThe automatic unlocking when the file's resource handle is closed was removed. Unlocking now always has to be done manually.
5.3.1get_defined_constantsWindows only: Core constants are categorized under Core, previously mhash.
 ibase_queryOn success the function now returns TRUE if there were no affected rows, where it previously returned 0 (a zero followed by an empty space).
 renamerename can now rename files across drives in Windows.
5.3.0 (PECL OCI8 1.3.4)oci_set_prefetchBefore this release, prefetching was limited to the lesser of rows rows and 1024 * rows bytes. The byte size restriction has now been removed.
5.3.0DateTime::__constructIf time contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.
 DateTime::modifyChanged the return value on success from NULL to DateTime.
 DateTime::setDateChanged the return value on success from NULL to DateTime.
 DateTime::setISODateChanged the return value on success from NULL to DateTime.
 DateTime::setTimeChanged the return value on success from NULL to DateTime.
 DateTime::setTimezoneChanged the return value on success from NULL to DateTime.
 DateTimeZone::getTransitionsThe optional timestamp_begin and timestamp_end were added.
 DateTimeZone::listIdentifiersAdded the optional what and country parameters.
 DirectoryIterator::__constructThrows UnexpectedValueException if the path cannot be opened.
 acoshThis function is now available on all platforms
 array_multisortThe SORT_LOCALE_STRING was added to array1_sort_flags as possible sort flags.
 array_reduceChanged initial to allow mixed, previously integer.
 array_searchAs with all internal PHP functions as of 5.3.0, array_search returns NULL if invalid parameters are passed to it.
 asinhThis function is now available on all platforms
 atanhThis function is now available on all platforms
 call_user_funcIf the called function expects a parameter to be passed by reference, an E_WARNING is now issued.
 call_user_funcThe interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.
 call_user_func_arrayThe interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.
 checkdnsrrThis function is now available on Windows platforms.
 clearstatcacheAdded optional clear_realpath_cache and filename parameters.
 copyAdded context support.
 cryptPHP now contains its own implementation for the MD5 crypt, Standard DES, Extended DES and the Blowfish algorithms and will use that if the system lacks of support for one or more of the algorithms.
 curl_getinfoIntroduced CURLINFO_CERTINFO.
 curl_setoptIntroduced CURLOPT_PROGRESSFUNCTION.
 date_default_timezone_setNow throws E_WARNING rather than E_STRICT.
 define_syslog_variablesThis function now throws an E_DEPRECATED notice.
 dldl is now disabled in some SAPIs due to stability issues. The only SAPIs that allow dl are CLI and Embed. Use the Extension Loading Directives instead.
 dns_get_recordThis function is now available on Windows platforms.
 dns_get_recordPrior to this release, if the authns parameter was given, the addtl parameter was also required.
 error_reportingE_DEPRECATED and E_USER_DEPRECATED introduced.
 exif_imagetypeAdded icon support.
 expm1This function is now available on all platforms
 fgetcsvThe escape parameter was added
 fnmatchThis function is now available on Windows platforms.
 func_get_argIf this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.
 func_get_argThis function can now be used in parameter lists.
 func_get_argsIf this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.
 func_get_argsThis function can now be used in parameter lists.
 func_num_argsThis function can now be used in parameter lists.
 func_num_argsIf this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns -1.
 gd_infoJPG Support attribute renamed to JPEG Support.
 get_cfg_varget_cfg_var was fixed to be able to return "array" ini options.
 get_classNULL became the default value for object, so passing NULL to object now has the same result as not passing any value.
 get_defined_constantsCore constants are categorized under Core, previously internal. On Windows, the Core Constants are categorized under mhash.
 get_object_varsThis function now returns NULL if the object isn't an object. Previously FALSE was returned.
 get_resource_typeIf handle is not a resource this functions returns NULL. Formerly, FALSE has been returned.
 getimagesizeAdded icon support.
 getmxrrThis function is now available on Windows platforms.
 getoptAdded support for "=" as argument/value separator.
 getoptParameter longopts is available on all systems.
 getoptAdded support for optional values (specified with "::").
 getoptThis function is no longer system dependent, and now works on Windows, too.
 hash_algosSupport for md2, ripemd256, ripemd320, salsa10, salsa20, snefru256 and sha224 was added
 htmlentitiesThe constant ENT_IGNORE was added.
 htmlspecialcharsThe constant ENT_IGNORE was added.
 imagecolorclosesthwbThis function is now available on Windows
 imagefilterPixelation support (IMG_FILTER_PIXELATE) was added.
 inet_ntopThis function is now available on Windows platforms.
 inet_ptonThis function is now available on Windows platforms.
 ini_getPreviously, the empty string was returned if the configuration option didn't exist. now, FALSE is returned instead.
 ini_get_allAdded details.
 is_aThis function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
 json_decodeAdded the optional depth. The default recursion depth was increased from 128 to 512
 json_encodeThe options parameter was added.
 json_encodeJSON_FORCE_OBJECT, JSON_HEX_AMP, JSON_HEX_APOS, JSON_HEX_QUOT, and JSON_HEX_TAG, options were added.
 linkThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 linkinfoThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 log1pThis function is now available on all platforms
 mb_get_infoThe entry "http_output_conv_mimetypes" was made available.
 mcrypt_create_ivMCRYPT_DEV_RANDOM and MCRYPT_DEV_URANDOM became available on Windows platforms.
 mcrypt_create_ivIt is no longer required to call srand first. This is now done automatically.
 mktimemktime now throws E_DEPRECATED notice if the is_dst parameter is used.
 mysql_db_queryThis function now throws an E_DEPRECATED notice.
 mysql_escape_stringThis function now throws an E_DEPRECATED notice.
 mysqli_get_cache_statsThe mysqli_get_cache_stats was added as stub.
 nl2brAdded the optional is_xhtml parameter. Before this version '<br />' was always inserted.
 openssl_openThe method has been added.
 openssl_sealThe method has been added.
 parse_ini_fileAdded optional scanner_mode parameter. Single quotes may now be used around variable assignments. Hash marks (#) should no longer be used as comments and will throw a deprecation warning if used.
 pg_lo_createThe optional object_id was added.
 pg_lo_importThe optional object_id was added.
 preg_quoteThe - character is now quoted
 property_existsThis function checks the existence of a property independent of accessibility.
 rawurlencodeNow conforms to RFC 3986.
 readlinkThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 realpathPrior to this release, if only the last path component did not exist, realpath would not fail on *BSD systems. realpath now fails in this case.
 register_tick_functionTicks are now supported on threaded web server modules.
 roundThe mode parameter was introduced.
 session_startIf a session fails to start, then FALSE is returned. Previously TRUE was returned.
 setlocaleThis function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.
 shm_attachThis function now returns a resource instead of an integer.
 socket_create_pairThis function is now available on Windows platforms.
 spl_autoload_registerThe prepend parameter was added.
 spl_autoload_registerNamespaces support was introduced.
 stream_context_createAdded the optional params argument.
 stream_socket_pairThis function is now available on Windows platforms.
 stristrAdded the optional parameter before_needle.
 strlenPrior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
 strstrAdded the optional parameter before_needle.
 strtotimePrior to PHP 5.3.0, relative time formats supplied to the time argument of strtotime such as this week, previous week, last week, and next week were interpreted to mean a 7 day period relative to the current date/time, rather than a week period of Monday through Sunday.
 strtotimePrior to PHP 5.3.0, 24:00 was not a valid format and strtotime returned FALSE.
 sybase_connectThe new parameter was added.
 symlinkThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 time_nanosleepThis function is now available on Windows platforms.
 time_sleep_untilThis function is now available on Windows platforms.
 touchIt became possible to change the modification time of a directory under Windows.
 mysqli::__constructAdded the ability of persistent connections.
 mysqli::optionsThe MYSQLI_OPT_INT_AND_FLOAT_NATIVE, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, MYSQLI_OPT_NET_READ_BUFFER_SIZE, and MYSQLI_OPT_SSL_VERIFY_SERVER_CERT options were added.
 mysqli::queryAdded the ability of async queries.
 PDO::__constructClasses which extends PDO and implements the __call magic method will now receive the method name in the declared casing. Previously this was always lower case.
 ReflectionFunction::__constructname can now be a closure.
 SplFileObject::setCsvControlAdded the escape parameter.
 SplObjectStorage::attachAdded the data parameter.
 XMLReader::expandThe parameter basenode was added.
5.2.15mysqli_driver::$report_modeChanging the reporting mode is now be per-request, rather than per-process.
5.2.11get_defined_constantsThe categorize parameter now operates appropriately. Previously, the categorize parameter was interpreted as !is_null($categorize), making any value other than NULL force the constants to be categorized.
5.2.10array_randThe resulting array of keys is no longer shuffled.
 array_uniqueChanged the default value of sort_flags back to SORT_STRING.
 curl_setoptIntroduced CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
 ip2longPrior to this version, ip2long would sometimes return a valid number even if passed a value which was not an (IPv4) Internet Protocol dotted address.
 natsortZero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.
5.2.9array_uniqueAdded the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.
5.2.8XSLTProcessor::importStylesheetAccepts SimpleXMLElement again which was broken since PHP 5.2.6.
5.2.7error_logThe possible value of 4 was added to message_type.
 parse_ini_fileOn syntax error this function will return FALSE rather than an empty array.
 roundThe inner workings of round was changed to conform to the C99 standard.
 strtotimeIn PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a month where that weekday was the first day of the month would incorrectly add one week to the returned timestamp. This has been corrected in 5.2.7 and later versions.
5.2.6fopenThe 'c' and 'c+' options were added
5.2.5addcslashesThe escape sequences \v and \f were added.
 debug_backtraceAdded the optional parameter provide_object.
 imagefilterAlpha support for IMG_FILTER_COLORIZE was added.
5.2.4array_sliceThe default value of the length parameter was changed to NULL. A NULL length now tells the function to use the length of array. Prior to this version, a NULL length was taken to mean a zero length (nothing will be returned).
 checkdnsrrTXT type was added.
 curl_getinfoIntroduced CURLINFO_PRIVATE.
 curl_setoptIntroduced CURLOPT_PRIVATE.
 get_loaded_extensionsThe optional zend_extensions parameter was added
 ldap_first_attributeThe ber_identifier was removed. This is now handled automatically by PHP.
 ldap_next_attributeThe ber_identifier was removed. This is now handled automatically by PHP.
 parse_ini_fileKeys and section names consisting of numbers are now evaluated as PHP integers thus numbers starting by 0 are evaluated as octals and numbers starting by 0x are evaluated as hexadecimals.
 stream_wrapper_registerAdded the flags parameter.
5.2.3getimagesizeRead errors generated by this function downgraded to E_NOTICE from E_WARNING.
 htmlentitiesThe double_encode parameter was added.
 htmlspecialcharsThe double_encode parameter was added.
 json_decodeThe nesting limit was increased from 20 to 128
 XMLWriter::writeElementThe content parameter became optional.
 XMLWriter::writeElementNsThe content parameter became optional.
 PDOStatement::getColumnMetatable field
5.2.2 - 5.2.6substrIf the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.
5.2.2DOMDocument::registerNodeClassPrior to 5.2.2, a previously registered extendedclass had to be unregistered before being able to register a new class extending the same baseclass.
 date_sun_infoThe order of latitude and longitude has been swapped.
 ftp_ssl_connectThe function was changed to return FALSE when it can't use an SSL connection, instead of falling back to a non-SSL one as previously.
 phpinfoThe "Loaded Configuration File" information was added, when before only "Configuration File (php.ini) Path" existed.
 preg_matchNamed subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
 preg_match_allNamed subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
 proc_terminatePrevious versions used to destroy the given process resource.
 token_get_allLine numbers are returned in element 2
5.2.1iterator_to_arrayThe use_keys parameter was added.
 json_decodeAdded support for JSON decoding of basic types.
 memory_get_peak_usageCompiling with --enable-memory-limit is no longer required for this function to exist.
 memory_get_usageCompiling with --enable-memory-limit is no longer required for this function to exist.
 mt_srandThe Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless.
 proc_openAdded the bypass_shell option to the other_options parameter.
 realpathPrior to this version, realpath returned FALSE if path is an empty string or NULL.
5.2.0base64_decodestrict added
 curl_multi_info_readmsgs_in_queue was added.
 error_reportingE_RECOVERABLE_ERROR introduced.
 imagettftextIt is now possible to specify an hexadecimal entity in text.
 imap_openn_retries added
 imap_reopenn_retries added
 mb_strrposAdded the optional parameter offset.
 memory_get_peak_usagereal_usage was added.
 memory_get_usagereal_usage was added.
 openssl_verifyThe signature_alg parameter was added.
 pathinfoThe PATHINFO_FILENAME constant was added.
 pg_escape_byteaconnection added
 pg_escape_stringconnection added
 session_get_cookie_paramsThe "httponly" entry was added in the returned array.
 session_set_cookie_paramsThe httponly parameter was added.
 set_error_handlerThe error handler must return FALSE to populate $php_errormsg.
 setcookieThe httponly parameter was added.
 setrawcookieThe httponly parameter was added.
 snmp_set_oid_numeric_printSince PHP 5.2.0.
 PDOStatement::executeThe keys from input_parameters must match the ones declared in the SQL. Before PHP 5.2.0 this was silently ignored.
 SimpleXMLElement::childrenThe optional parameter is_prefix was added.
 SimpleXMLElement::__constructAdded the ns and is_prefix parameters.
 SoapServer::SoapServerAdded the typemap option.
 XMLReader::openencoding and options were added.
 XMLReader::XMLencoding and options were added.
5.1.3DirectoryIterator::__constructThrows RuntimeException if the path is an empty string.
 curl_getinfoIntroduced CURLINFO_HEADER_OUT.
 get_headersThis function now uses the default stream context, which can be set/changed with the stream_context_set_default function.
 http_build_querySquare brackets are escaped.
 imagecolorallocateReturns FALSE if the allocation failed. Previously -1 was returned.
 imagecolorallocatealphaReturns FALSE if the allocation failed. Previously -1 was returned.
 imagepngAdded the filters parameter.
 mb_get_infoThe entries "mail_charset", "mail_header_encoding", and "mail_body_encoding" were made available.
 SoapClient::__doRequestThe one_way parameter was added.
 XMLReader::getAttributeReturn NULL if no attribute found. Previously, returned an empty string.
5.1.2date_default_timezone_setThe function started to validate the timezone_identifier parameter.
 headerThis function now prevents more than one header to be sent at once as a protection against header injection attacks.
 http_build_queryThe arg_separator parameter was added.
 imagepngAdded the quality parameter.
 parse_urlAdded the component parameter.
 SimpleXMLElement::__constructAdded the options and data_is_url parameters.
5.1.1dateThere are useful constants of standard date/time formats that can be used to specify the format parameter.
 debug_backtraceAdded the current object as a possible return element.
 gmdateThere are useful constants of standard date/time formats that can be used to specify the format parameter.
5.1.0DirectoryIterator::__constructThrows RuntimeException on error. Previously, threw Exception.
 DOMDocument::saveAdded the options parameter
 DOMDocument::saveXMLAdded the options parameter
 class_implementsAdded the option to pass the class parameter as a string. Added the autoload parameter.
 class_parentsAdded the option to pass the class parameter as a string. Added the autoload parameter.
 ctype_digitBefore PHP 5.1.0, this function returned TRUE when text was an empty string.
 curl_setoptIntroduced CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
 dateThe valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
 dateNow issues the E_STRICT and E_NOTICE time zone errors.
 date_sunriseNow issues the E_STRICT and E_NOTICE time zone errors.
 date_sunsetNow issues the E_STRICT and E_NOTICE time zone errors.
 explodeSupport for negative limits was added
 fgetcsvThe length is now optional. Default is 0, meaning no length limit.
 file_get_contentsAdded the offset and maxlen parameters.
 file_put_contentsAdded support for LOCK_EX and the ability to pass a stream resource to the data parameter
 get_parent_classIf called without parameter outside object, this function would have returned NULL with a warning, but now returns FALSE.
 gettimeofdayThe return_float parameter was added.
 globGLOB_ERR was added
 gmdateThe valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
 gmmktimeAs of PHP 5.1.0, the is_dst parameter became deprecated. As a result, the new timezone handling features should be used instead.
 idateNow issues the E_STRICT and E_NOTICE time zone errors.
 imagerotateignore_transparent was added.
 intvalThrows E_NOTICE and returns 1, when an object is passed to var.
 localtimeNow issues the E_STRICT and E_NOTICE time zone errors.
 md5_fileChanged the function to use the streams API. It means that you can use it with wrappers, like md5_file('http://example.com/..')
 mktimeNow issues the E_STRICT and E_NOTICE time zone errors.
 mktimeWhen called with no arguments, mktime throws E_STRICT notice. Use the time function instead.
 mktimeThe is_dst parameter became deprecated. Made the function return FALSE on error, instead of -1. Fixed the function to accept the year, month and day to be all passed as zero.
 mssql_connectThe new_link parameter was added
 openssl_pkcs7_verifyThe content parameter was added.
 preg_replaceAdded the count parameter
 preg_replace_callbackThe count parameter was added
 session_regenerate_idAdded the delete_old_session parameter.
 sha1_fileChanged the function to use the streams API. It means that you can use it with wrappers, like sha1_file('http://example.com/..')
 str_word_countAdded the charlist parameter
 stream_copy_to_streamAdded the offset parameter
 stream_filter_appendPrior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
 stream_filter_prependPrior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
 stream_get_contentsThe offset was added.
 strftimeNow issues the E_STRICT and E_NOTICE time zone errors.
 strtotimeNow issues the E_STRICT and E_NOTICE time zone errors.
 strtotimeNow returns FALSE on failure, instead of -1.
 substr_compareAdded the possibility to use a negative offset.
 substr_countAdded the offset and the length parameters
 var_exportPossibility to export classes and arrays containing classes using the __set_state() magic method.
 XSLTProcessor::registerPHPFunctionsThe restrict parameter was added.
5.0.5php_check_syntaxThis function was removed from PHP.
5.0.4msql_fetch_arrayA bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
 msql_fetch_objectA bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
 msql_fetch_rowA bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
5.0.3get_class_varsget_class_vars will only return the properties that can be accessed from the current scope.
 is_subclass_ofYou may also specify the object parameter as a string (the name of the class)
 php_check_syntaxCalling exit after php_check_syntax resulted in a Segfault.
5.0.2array_sliceThe optional preserve_keys parameter was added.
 class_existsNo longer returns TRUE for defined interfaces. Use interface_exists.
 get_class_varsCalling get_class_vars will now expose all the properties as an array, unlike previous behaviour where protected and private properties were prefixed with nul bytes.
 sortAdded SORT_LOCALE_STRING
 strtotimeIn PHP 5 up to 5.0.2, "now" and other relative times are wrongly computed from today's midnight. This differs from other versions where it is correctly computed from current time.
5.0.1get_class_varsCalling get_class_vars will expose all properties, as when converting an object to a class.
 php_check_syntaxerror_message is passed by reference.
5.0.0curl_setoptIntroduced CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.
 is_aThis function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.
 strtotimeMicroseconds began to be allowed, but they are ignored.