# Changelog

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

Version | Function | Description
--- | --- | ---
8.0.0 / 1.18.1 | ZipArchive::addGlob | "comp_method", "comp_flags", "enc_method" and "enc_password" in options were added.
8.0.0 / 1.18.0 | ZipArchive::addEmptyDir | flags was added.
| ZipArchive::addFile | flags was added.
| ZipArchive::addFromString | flags was added.
| ZipArchive::addGlob | "flags" in options was added.
| ZipArchive::getStatusString | This method can be called on closed archive.
7.4.4 | proc_open | Added the create_new_console option to the other_options parameter.
7.4.0 | array_merge | This function can now be called without any parameter. Formerly, at least one parameter has been required.
| array_merge_recursive | This function can now be called without any parameter. Formerly, at least one parameter has been required.
| base_convert | Passing invalid characters will now generate a deprecation notice. The result will still be computed as if the invalid characters did not exist.
| bindec | Passing invalid characters will now generate a deprecation notice. The result will still be computed as if the invalid characters did not exist.
| fgetcsv | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| fputcsv | The escape_char parameter now also accepts an empty string to disable the proprietary escape mechanism.
| get_magic_quotes_gpc | This function has been deprecated.
| get_magic_quotes_runtime | This function has been deprecated.
| hexdec | Passing invalid characters will now generate a deprecation notice. The result will still be computed as if the invalid characters did not exist.
| idn_to_ascii | The default value of variant is now INTL_IDNA_VARIANT_UTS46 instead of the deprecated INTL_IDNA_VARIANT_2003.
| idn_to_utf8 | The default value of variant is now INTL_IDNA_VARIANT_UTS46 instead of the deprecated INTL_IDNA_VARIANT_2003.
| imagecropauto | The 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.
| imagecropauto | The 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.
| imagefilter | Scatter support (IMG_FILTER_SCATTER) was added.
| implode | Passing the glue after the pieces (i.e. not using the documented order of parameters) has been deprecated.
| ldap_control_paged_result | This function has been deprecated.
| ldap_control_paged_result_response | This function has been deprecated.
| money_format | This function has been deprecated. Instead, use NumberFormatter::formatCurrency.
| octdec | Passing invalid characters will now generate a deprecation notice. The result will still be computed as if the invalid characters did not exist.
| proc_open | proc_open now also accepts an array for the cmd.
| proc_open | Added the create_process_group option to the other_options parameter.
| str_getcsv | The 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.
| strip_tags | The allowable_tags now alternatively accepts an array.
| SplFileObject::fgetcsv | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| SplFileObject::fputcsv | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| SplFileObject::getCsvControl | The escape character can now be an empty string.
| SplFileObject::setCsvControl | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| SQLite3Stmt::bindParam | sql_param now also supports the @param notation.
| SQLite3Stmt::bindValue | sql_param now also supports the @param notation.
7.3.15, 7.4.3 | curl_setopt | Introduced CURLOPT_HTTP09_ALLOWED .
7.3.14, 7.4.2 | dba_open | The lmdb driver now supports an additional $mapsize parameter.
7.3.0 | DateTime::createFromFormat | The v format specifier has been added.
| apache_request_headers | This function became available in the FPM SAPI.
| array_push | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_unshift | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| bcmul | bcmul now returns numbers with the requested scale. Formerly, the returned numbers may have omitted trailing decimal zeroes.
| bcpow | bcpow now returns numbers with the requested scale. Formerly, the returned numbers may have omitted trailing decimal zeroes.
| bcscale | bcscale 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.
| compact | compact now issues an E_NOTICE level error if a given string refers to an unset variable. Formerly, such strings have been silently skipped.
| curl_getinfo | Introduced CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, CURLINFO_CONTENT_LENGTH_UPLOAD_T, CURLINFO_HTTP_VERSION, CURLINFO_PROTOCOL, CURLINFO_PROXY_SSL_VERIFYRESULT, CURLINFO_SCHEME, CURLINFO_SIZE_DOWNLOAD_T, CURLINFO_SIZE_UPLOAD_T, CURLINFO_SPEED_DOWNLOAD_T, CURLINFO_SPEED_UPLOAD_T, CURLINFO_APPCONNECT_TIME_T, CURLINFO_CONNECT_TIME_T, CURLINFO_FILETIME_T, CURLINFO_NAMELOOKUP_TIME_T, CURLINFO_PRETRANSFER_TIME_T, CURLINFO_REDIRECT_TIME_T, CURLINFO_STARTTRANSFER_TIME_T, CURLINFO_TOTAL_TIME_T.
| curl_setopt | Introduced CURLOPT_ABSTRACT_UNIX_SOCKET, CURLOPT_KEEP_SENDING_ON_ERROR, CURLOPT_PRE_PROXY, CURLOPT_PROXY_CAINFO, CURLOPT_PROXY_CAPATH, CURLOPT_PROXY_CRLFILE, CURLOPT_PROXY_KEYPASSWD, CURLOPT_PROXY_PINNEDPUBLICKEY, CURLOPT_PROXY_SSLCERT, CURLOPT_PROXY_SSLCERTTYPE, CURLOPT_PROXY_SSL_CIPHER_LIST, CURLOPT_PROXY_SSLKEY, CURLOPT_PROXY_SSLKEYTYPE, CURLOPT_PROXY_SSL_OPTIONS, CURLOPT_PROXY_SSL_VERIFYHOST, CURLOPT_PROXY_SSL_VERIFYPEER, CURLOPT_PROXY_SSLVERSION, CURLOPT_PROXY_TLSAUTH_PASSWORD, CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPT_PROXY_TLSAUTH_USERNAME, CURLOPT_SOCKS5_AUTH, CURLOPT_SUPPRESS_CONNECT_HEADERS, CURLOPT_DISALLOW_USERNAME_IN_URL, CURLOPT_DNS_SHUFFLE_ADDRESSES, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, CURLOPT_HAPROXYPROTOCOL, CURLOPT_PROXY_TLS13_CIPHERS, CURLOPT_SSH_COMPRESSION, CURLOPT_TIMEVALUE_LARGE and CURLOPT_TLS13_CIPHERS.
| define | case_insensitive has been deprecated and will be removed in version 8.0.0.
| ftp_fget | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_fput | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_get | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_nb_fget | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_nb_fput | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_nb_get | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_nb_put | The mode parameter is now optional. Formerly it has been mandatory.
| ftp_put | The mode parameter is now optional. Formerly it has been mandatory.
| getallheaders | This function became available in the FPM SAPI.
| is_countable | is_countable has been added.
| json_decode | JSON_THROW_ON_ERROR options was added.
| json_encode | JSON_THROW_ON_ERROR options was added.
| mb_convert_case | Added support for MB_CASE_FOLD, MB_CASE_UPPER_SIMPLE, MB_CASE_LOWER_SIMPLE, MB_CASE_TITLE_SIMPLE, and MB_CASE_FOLD_SIMPLE as mode.
| password_hash | Support for Argon2id passwords using PASSWORD_ARGON2ID was added.
| preg_quote | The # character is now quoted
| session_get_cookie_params | The "samesite" entry was added in the returned array.
| session_set_cookie_params | An alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
| setcookie | An alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
| setrawcookie | An alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
| unlink | On Windows, it is now possible to unlink files with handles in use, while formerly that would fail. However, it is still not possible to re-create the unlinked file, until all handles to it have been closed.
| var_export | Now exports stdClass objects as an array cast to an object ((object) array( ... )), rather than using the nonexistent method stdClass::__setState. The practical effect is that now stdClass is exportable, and the resulting code will even work on earlier versions of PHP.
| xml_set_external_entity_ref_handler | The return value of the handler is no longer ignored if the extension has been built against libxml. Formerly, the return value has been ignored, and parsing did never stop.
7.3 | ldap_add | Support for serverctrls added
| ldap_compare | Support for serverctrls added
| ldap_delete | Support for serverctrls added
| ldap_exop | Support for serverctrls added
| ldap_exop_passwd | Support for serverctrls added
| ldap_list | Support for serverctrls added
| ldap_mod_add | Support for serverctrls added
| ldap_mod_del | Support for serverctrls added
| ldap_mod_replace | Support for serverctrls added
| ldap_modify_batch | Support for serverctrls added
| ldap_parse_result | Support for serverctrls added
| ldap_read | Support for serverctrls added
| ldap_rename | Support for serverctrls added
| ldap_search | Support for serverctrls added
7.2.19, 7.3.6 | SplFileObject::__toString | Changed from an alias of SplFileObject::current to an alias of SplFileObject::fgets.
7.2.18, 7.3.5 | substr_compare | offset may now be equal to the length of main_str.
7.2.0 | array_unique | If 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.
| assert | Usage 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.
| bcmod | The scale parameter was added.
| bcmod | dividend and divisor are no longer truncated to integer, so now the behavior of bcmod follows fmod rather than the % operator.
| count | count will now yield a warning on invalid countable types passed to the array_or_countable parameter.
| date_parse | The zone element of the returned array represents seconds instead of minutes now, and its sign is inverted. For instance -120 is now 7200.
| date_parse_from_format | The 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_data | The filename parameter was renamed to stream and now supports both local files or stream resources.
| exif_read_data | Support for the following EXIF formats were added: Samsung DJI Panasonic Sony Pentax Minolta Sigma/Foveon AGFA Kyocera Ricoh Epson
| exif_thumbnail | The filename parameter was renamed to stream and now supports both local files or stream resources.
| get_class | NULL was removed as the default value for object, and is no longer a valid input.
| gettype | Closed resources are now reported as 'resource (closed)'. Previously the returned value for closed resources were 'unknown type'.
| hash_copy | Accept and return HashContext instead of resource.
| hash_final | Accept HashContext instead of resource.
| hash_hmac | Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.
| hash_hmac_file | Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.
| hash_init | Return HashContext instead of resource.
| hash_init | Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) with HASH_HMAC was disabled.
| hash_pbkdf2 | Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled.
| hash_update | Accept HashContext instead of resource.
| hash_update_file | Accept HashContext instead of resource.
| hash_update_stream | Accept HashContext instead of resource.
| idn_to_ascii | INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
| idn_to_utf8 | INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
| imageantialias | imageantialias is now generally available. Formerly it was only available if PHP was compiled with the bundled version of the GD library.
| imagegd | imagegd now allows to output truecolor images. Formerly, these have been implicitly converted to palette.
| imagelayereffect | Added IMG_EFFECT_MULTIPLY (requires system libgd >= 2.1.1 or the bundled libgd).
| imagetypes | IMG_BMP added.
| is_object | is_object now returns TRUE for unserialized objects without a class definition (class of __PHP_Incomplete_Class). Previously FALSE was returned.
| json_decode | JSON_INVALID_UTF8_IGNORE, and JSON_INVALID_UTF8_SUBSTITUTE options were added.
| json_encode | JSON_INVALID_UTF8_IGNORE, and JSON_INVALID_UTF8_SUBSTITUTE options were added.
| mail | The additional_headers parameter now also accepts an array.
| mb_check_encoding | This function now also accepts an array as var. Formerly, only strings have been supported.
| mb_convert_encoding | This function now also accepts an array as val. Formerly, only strings have been supported.
| mb_send_mail | The additional_headers parameter now also accepts an array.
| mt_rand | mt_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_format | number_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_verify | The p7bfilename parameter was added.
| pack | float and double types supports both Big Endian and Little Endian.
| parse_str | Usage of parse_str without a second parameter now emits an E_DEPRECATED notice.
| password_hash | Support for Argon2i passwords using PASSWORD_ARGON2I was added.
| preg_match | The PREG_UNMATCHED_AS_NULL is now supported for the $flags parameter.
| preg_match_all | The PREG_UNMATCHED_AS_NULL is now supported for the $flags parameter.
| proc_nice | This function is now available on Windows.
| rand | 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.
| read_exif_data | This function alias was deprecated.
| session_abort | The return type of this function is bool now. Formerly, it has been void.
| session_module_name | It is now explicitly forbidden to set the module name to "user". Formerly, this has been silently ignored.
| session_name | session_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_reset | The return type of this function is bool now. Formerly, it has been void.
| session_set_cookie_params | Returns TRUE on success or FALSE on failure. Formerly the function returned void.
| session_unset | The return type of this function is bool now. Formerly, it has been void.
| session_write_close | The return type of this function is bool now. Formerly, it has been void.
| set_error_handler | errcontext became deprecated. Usage of this parameter now emits an E_DEPRECATED notice.
| unpack | float and double types supports both Big Endian and Little Endian.
| utf8_decode | This 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_encode | This 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::debugDumpParams | PDOStatement::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::openBlob | The flags parameter has been added, allowing to write BLOBs; formerly only reading was supported.
7.1.24, 7.2.12, 7.3.0 | xml_parser_get_option | options now supports XML_OPTION_SKIP_TAGSTART and XML_OPTION_SKIP_WHITE.
7.1.5 | IntlDateFormatter::format | Support for providing general DateTimeInterface objects to the value parameter was added. Formerly, only proper DateTime objects were supported.
7.1.4 | PDO::sqliteCreateFunction | The flags parameter has been added.
| SQLite3::createFunction | The flags parameter has been added.
7.1.0 | DateInterval::format | The F and f format characters were added.
| DateTime::setTime | The microseconds parameter was added.
| array_rand | The internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.
| curl_multi_setopt | Introduced CURLMOPT_PUSHFUNCTION.
| exif_imagetype | Added WebP support.
| file_get_contents | Support for negative offsets has been added.
| get_headers | The context parameter was added.
| getenv | The varname can now be omitted to retrieve an associative array of all environment variables.
| getimagesize | Added WebP support.
| getopt | Added the optind parameter.
| grapheme_extract | Support for negative starts has been added.
| grapheme_stripos | Support for negative offsets has been added.
| grapheme_strpos | Support for negative offsets has been added.
| hash_algos | Support for sha512/224, sha512/256, sha3-224, sha3-256, sha3-384 and sha3-512 has been added.
| iconv_strpos | Support for negative offsets has been added.
| json_decode | An empty JSON key ("") can be encoded to the empty object property instead of using a key with value _empty_.
| json_encode | JSON_UNESCAPED_LINE_TERMINATORS options was added.
| json_encode | serialize_precision is used instead of precision when encoding double values.
| list | It is now possible to specify keys in list. This enables destructuring of arrays with non-integer or non-sequential keys.
| long2ip | The parameter type of proper_address has been changed from string to integer.
| mb_ereg | mb_ereg will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.
| mb_ereg_replace | The e modifier has been deprecated.
| mb_ereg_search_setpos | Support for negative positions has been added.
| mb_eregi | mb_eregi will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.
| mb_eregi_replace | The e modifier has been deprecated.
| mb_strimwidth | Support for negative starts and widths has been added.
| mb_stripos | Support for negative offsets has been added.
| mb_strpos | Support for negative offsets has been added.
| mt_rand | mt_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_rand | rand has been made an alias of mt_rand.
| mt_srand | mt_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_srand | srand has been made an alias of mt_srand.
| openssl_csr_new | configargs now also supports curve_name.
| openssl_decrypt | The tag and aad parameters were added.
| openssl_encrypt | The tag, aad and tag_length parameters were added.
| openssl_pkey_new | The curve_name configarg was added to make it possible to create EC keys.
| output_add_rewrite_var | Before 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_vars | Before 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_signal | As 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_handler | pcntl_signal_get_handler has been added.
| pg_fetch_all | The result_type parameter was added.
| pg_last_notice | The option parameter was added.
| pg_select | The result_type parameter was added.
| rand | rand has been made an alias of mt_rand.
| session_start | session_start now returns FALSE and no longer initializes $_SESSION when it failed to start the session.
| shuffle | The internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.
| srand | srand has been made an alias of mt_srand.
| str_shuffle | The internal randomization algorithm has been changed to use the Mersenne Twister Random Number Generator instead of the libc rand function.
| stripos | Support for negative offsets has been added.
| strpos | Support for negative offsets has been added.
| substr_count | Support for negative offsets and lengths has been added. length may also be 0 now.
| unpack | The optional offset has been added.
| unserialize | The 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.1 | DateTime::__construct | From now on microseconds are filled with actual value. Not with '00000'.
7.0.16, 7.1.2 | dns_get_record | Added support for CAA record type.
| fopen | The 'e' option was added.
7.0.15, 7.1.1 | get_defined_functions | The exclude_disabled parameter has been added.
7.0.15,7.1.1 | pack | The "e", "E", "g" and "G" codes were added to enable byte order support for float and double.
7.0.11 | iconv_substr | If 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.10 | SQLite3::__construct | The filename can now be empty to use a private, temporary on-disk database.
7.0.7 | curl_multi_setopt | Introduced CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS, CURLMOPT_MAX_PIPELINE_LENGTH and CURLMOPT_MAX_TOTAL_CONNECTIONS.
| curl_setopt | Introduced 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.0 | array_column | Added the ability for the input parameter to be an array of objects.
| assert | assert 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_setopt | Support for disabling the CURLOPT_SAFE_UPLOAD option has been removed. All curl file uploads must use CURLFile.
| current | array is now always passed by value. Prior to this version, it was passed by reference if possible, and by value otherwise.
| define | array values are allowed.
| dirname | Added the optional levels parameter.
| dl | dl is disabled in PHP-FPM.
| getrusage | This function is now supported on Windows.
| gmmktime | is_dst parameter has been removed.
| imagepsbbox | T1Lib support was removed from PHP, thus this function was removed.
| imagepsencodefont | T1Lib support was removed from PHP, thus this function was removed.
| imagepsextendfont | T1Lib support was removed from PHP, thus this function was removed.
| imagepsfreefont | T1Lib support was removed from PHP, thus this function was removed.
| imagepsloadfont | T1Lib support was removed from PHP, thus this function was removed.
| imagepsslantfont | T1Lib support was removed from PHP, thus this function was removed.
| imagepstext | T1Lib support was removed from PHP, thus this function was removed.
| is_numeric | Strings in hexadecimal (e.g. 0xf4c3b00c) notation are no longer regarded as numeric strings, i.e. is_numeric returns FALSE now.
| json_decode | Rejected RFC 7159 incompatible number formats - top level (07, 0xff, .1, -.1) and all levels ([1.], [1.e1])
| json_decode | An empty PHP string or value that after casting to string is an empty string (NULL, FALSE) results in JSON syntax error.
| key | array is now always passed by value. Prior to this version, it was passed by reference if possible, and by value otherwise.
| list | Strings can no longer be unpacked.
| list | list expressions can no longer be completely empty.
| list | The order that the assignment operations are performed in has changed.
| mktime | is_dst parameter has been removed.
| ob_start | In 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_open | The iv has been added.
| openssl_seal | The iv has been added.
| parse_ini_file | Hash marks (#) are no longer recognized as comments.
| preg_replace | Support for the /e modifier has been removed. Use preg_replace_callback instead.
| proc_open | Added the blocking_pipes option to the other_options parameter.
| session_regenerate_id | session_regenerate_id saves old session data before closing.
| session_set_save_handler | Added the optional validate_sid and update_timestamp parameters.
| session_start | The options parameter was added.
| set_exception_handler | The type of parameter passed into exception_handler changed from Exception to Throwable
| setlocale | Support for the category parameter passed as a string has been removed. Only LC_* constants can be used as of this version.
| shmop_close | The type of shmid has been changed from int to resource.
| shmop_delete | The type of shmid has been changed from int to resource.
| shmop_open | The return type of shmop_open has been changed from int to resource.
| shmop_read | The type of shmid has been changed from int to resource.
| shmop_size | The type of shmid has been changed from int to resource.
| shmop_write | The type of shmid has been changed from int to resource.
| substr | If 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_all | Added the optional flags parameter along with the TOKEN_PARSE flag.
| unserialize | The options parameter has been added.
| IntlDateFormatter::setTimeZoneId | This function has been removed.
5.6.25, 7.0.10 | imagetypes | IMG_WEBP added.
| SplFileObject::getCsvControl | Added the escape character to the returned array.
5.6.16 | mysqli::real_connect | Added the MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT flag for MySQL Native Driver
5.6.12 | gd_info | WebP Support added.
5.6.6 | json_encode | JSON_PRESERVE_ZERO_FRACTION options was added.
5.6.5 | crypt | When 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.3 | pack | The "q", "Q", "J" and "P" codes were added to enable working with 64-bit numbers.
5.6.1 | parse_ini_file | Added new INI_SCANNER_TYPED mode.
| sem_acquire | The $nowait parameter was added.
5.6.0 | array_fill | num may now be zero. Previously, num was required to be greater than zero.
| array_filter | Added optional flag parameter and constants ARRAY_FILTER_USE_KEY and ARRAY_FILTER_USE_BOTH
| crypt | Raise E_NOTICE security warning if salt is omitted.
| curl_setopt | Removed CURLOPT_CLOSEPOLICY and associated values.
| curl_setopt | CURLOPT_SAFE_UPLOAD is now TRUE by default.
| hash_algos | Support 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_decode | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
| htmlentities | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
| htmlspecialchars | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
| json_decode | Invalid non-lowercased variants of the true, false and null literals are no longer accepted as valid input, and will generate warnings.
| mb_regex_encoding | Default encoding is changed to UTF-8. It was EUC-JP Previously.
| mcrypt_create_iv | MCRYPT_DEV_URANDOM is now the default value of source.
| mcrypt_decrypt | Invalid 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_encrypt | Invalid 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_connect | Support for giving the PGSQL_CONNECT_ASYNC constant as the connect_type was added.
| pg_convert | No 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_delete | No longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
| pg_insert | No longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
| pg_insert | Unless PGSQL_DML_STRING is passed, the function now returns the connection resource instead of TRUE on success.
| pg_lo_seek | Added 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_tell | Added 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_truncate | Added 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_data | No longer experimental. Added "is enum" as default attribute. extended flag is added.
| pg_select | No longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
| pg_update | No longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
| stream_socket_enable_crypto | The crypto_type is now optional.
| stream_socket_enable_crypto | Introduce 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.
| unserialize | Manipulating the serialised data by replacing C: with O: to force object instantiation without calling the constructor will now fail.
| ReflectionClass::newInstanceWithoutConstructor | All internal classes can now be instantiated except for those declared final.
| XMLReader::getAttributeNo | XMLReader::getAttributeNo now returns NULL if the attribute doesn't exist.
| XMLReader::getAttributeNs | XMLReader::getAttributeNS now returns NULL if the attribute doesn't exist.
5.5.38, 5.6.24, 7.0.9 | getenv | The local_only parameter has been added.
5.5.22, 5.6.6 | flock | Added support for the wouldblock parameter on Windows.
| SplFileObject::flock | Added support for the wouldblock parameter on Windows.
5.5.21, 5.6.5 | SplFileObject::fputcsv | Added the escape parameter.
5.5.21 | crypt | When 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.3 | imagescale | The 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.3 | DateTimeZone::getOffset | datetime type changed to DateTimeInterface. Previously, DateTime.
5.5.11 | substr_compare | length may now be 0.
5.5.10 | DateTimeZone::__construct | The timezone parameter accepts offset values.
5.5.8 | DatePeriod::__construct | end type changed to DateTimeInterface. Previously, DateTime.
5.5.7 | apache_request_headers | This function became available in the CLI server.
| apache_response_headers | This function became available in the CLI server.
| getallheaders | This function became available in the CLI server.
5.5.4 | fputcsv | The escape_char parameter was added
5.5.3/5.4.19 | pg_delete | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
| pg_insert | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
| pg_select | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
| pg_update | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
5.5.2 | DOMDocument::schemaValidate | Added the flags parameter
| DOMDocument::schemaValidateSource | Added the flags parameter
5.5.1 | hex2bin | A warning is thrown if the input string is invalid hexadecimal string.
| pg_unescape_bytea | A warning is thrown if the input string is invalid.
| session_set_save_handler | Added the optional create_sid parameter.
5.5.0/PECL 3.0.0 | IntlDateFormatter::create | An 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::format | Support for providing IntlCalendar objects to the value parameter was added.
| IntlDateFormatter::setCalendar | It became possible to pass an IntlCalendar object.
5.5.0 | DatePeriod::__construct | start type changed to DateTimeInterface. Previously, DateTime.
| curl_getinfo | Introduced 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_setopt | Introduced CURLOPT_SHARE.
| curl_setopt | Added the cURL resource as the first argument to the CURLOPT_PROGRESSFUNCTION callback.
| empty | empty now supports expressions, rather than only variables.
| imagerotate | The ignore_transparent is now silently ignored.
| imagerotate | This function is now affected by the interpolation method set by the imagesetinterpolation function.
| ip2long | Prior 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_array | iterator_to_array gained support for key types other than integer and string when the use_keys parameter is enabled.
| json_encode | depth parameter was added.
| json_encode | JSON_PARTIAL_OUTPUT_ON_ERROR options was added.
| json_encode | The return value on failure was changed from null string to FALSE.
| mysql_connect | This function will generate an E_DEPRECATED error.
| mysql_db_name | The mysql_list_dbs function is deprecated, and emits an E_DEPRECATED level error.
| mysql_pconnect | This function will generate an E_DEPRECATED error.
| mysql_tablename | The mysql_tablename function is deprecated, and emits an E_DEPRECATED level error.
| pack | The "Z" code was added with equivalent functionality to "a" for Perl compatibility.
| php_logo_guid | php_logo_guid has been removed from PHP.
| phpinfo | Logo 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_replace | The /e modifier is deprecated. Use preg_replace_callback instead. See the PREG_REPLACE_EVAL documentation for additional information about security risks.
| set_error_handler | error_handler now accepts NULL.
| set_exception_handler | Previously, if NULL was passed then this function returned TRUE. It returns the previous handler since PHP 5.5.0.
| setcookie | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
| setrawcookie | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
| unpack | Changes 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_guid | zend_logo_guid has been removed from PHP.
| IntlDateFormatter::setTimeZoneId | This function has been deprecated.
| mysqli::commit | Added flags and name parameters.
| mysqli::options | The MYSQLI_SERVER_PUBLIC_KEY and MYSQLI_SERVER_PUBLIC_KEY options were added.
| mysqli::rollback | Added flags and name parameters.
| SoapClient::SoapClient | New ssl_method option.
5.4.43, 5.5.27, 5.6.11 | escapeshellarg | Exclamation marks are replaced by spaces.
| escapeshellcmd | Exclamation marks are replaced by spaces.
5.4.42, 5.5.27 | mail | Header 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.16 | ucwords | Added the delimiters parameter.
5.4.8 | assert | The description parameter was added. The description is also now provided to a callback function in ASSERT_CALLBACK mode as the fourth argument.
| mb_strcut | Passing NULL as length extracts all bytes to the end of the string. Prior to this version NULL was treated the same as 0.
| mb_substr | Passing 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.7 | curl_getinfo | Introduced CURLINFO_PRIMARY_IP, CURLINFO_PRIMARY_PORT, CURLINFO_LOCAL_IP and CURLINFO_LOCAL_PORT.
| parse_url | Fixed host recognition when scheme is omitted and a leading component separator is present.
5.4.4 | hex2bin | A 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.0b1 | idn_to_ascii | Added the parameters variant and idna_info; UTS #46 support (requires ICU ≥ 4.6).
| idn_to_utf8 | Added the parameters variant and idna_info; UTS #46 support (requires ICU ≥ 4.6).
5.4.0 | DOMDocument::loadHTML | Added options parameter.
| DOMDocument::loadHTMLFile | Added options parameter.
| apache_child_terminate | This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
| apache_request_headers | This 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_headers | This 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_combine | Previous versions issued E_WARNING and returned FALSE for empty arrays.
| array_multisort | The SORT_NATURAL and SORT_FLAG_CASE were added to array1_sort_flags as possible sort flags.
| date_default_timezone_get | The timezone is no longer guessed from information available through the operating system as the guessed timezone can not be relied on.
| date_default_timezone_get | The TZ environment variable is no longer used to guess the timezone.
| debug_backtrace | Added the optional parameter limit.
| debug_print_backtrace | Added the optional parameter limit.
| define_syslog_variables | This function was removed from PHP.
| dns_get_record | Added raw parameter.
| empty | Checking non-numeric offsets of strings returns TRUE.
| error_reporting | E_STRICT became part of E_ALL.
| filter_input_array | Added add_empty parameter.
| filter_var_array | Added add_empty parameter.
| get_html_translation_table | The default value for the encoding parameter was changed to UTF-8.
| get_html_translation_table | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| get_magic_quotes_gpc | Always returns FALSE because the magic quotes feature was removed from PHP.
| get_magic_quotes_runtime | Always returns FALSE because the magic quotes feature was removed from PHP.
| getallheaders | This 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.
| gzcompress | Added encoding parameter.
| gzdeflate | Added encoding parameter.
| gzencode | FORCE_DEFLATE now generates RFC 1950 compliant output.
| hash | The tiger algorithm now uses big-endian byte ordering. See also example below.
| hash_algos | Support for joaat, fnv132 and fnv164 was added. Support for Salsa10 and Salsa20 was removed.
| html_entity_decode | Default encoding changed from ISO-8859-1 to UTF-8.
| html_entity_decode | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| htmlentities | The default value for the encoding parameter was changed to UTF-8.
| htmlentities | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| htmlspecialchars | The default value for the encoding parameter was changed to UTF-8.
| htmlspecialchars | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| htmlspecialchars_decode | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| http_build_query | The enc_type parameter was added.
| iconv | Since this version, the function returns FALSE on illegal characters, unless //IGNORE is specified in output charset. Before, it returned partial output string.
| imagecolorset | The alpha parameter was added.
| imagegd | Added support for passing a stream resource to to.
| imagegd2 | Added support for passing a stream resource to to.
| imagegif | Added support for passing a stream resource to to.
| imagejpeg | Disallowed passing an empty string to to to skip this argument.
| imagejpeg | Added support for passing a stream resource to to.
| imagepng | Added support for passing a stream resource to to.
| imagewbmp | Added support for passing a stream resource to to.
| isset | Checking non-numeric offsets of strings now returns FALSE.
| json_decode | The options parameter was added.
| json_decode | JSON_BIGINT_AS_STRING, and JSON_OBJECT_AS_ARRAY options were added.
| json_encode | JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, and JSON_UNESCAPED_UNICODE options were added.
| mb_decode_numericentity | Added is_hex parameter.
| mb_encode_numericentity | Added is_hex parameter.
| mysqli_get_cache_stats | The mysqli_get_cache_stats was removed.
| number_format | This function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.
| ob_start | The 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_start | A chunk size of 1 now results in chunks of 1 byte being sent to the output buffer.
| openssl_decrypt | The raw_output was changed to options.
| openssl_encrypt | The raw_output was changed to options.
| preg_match_all | The matches parameter became optional.
| scandir | sorting_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_handler | Added SessionHandlerInterface for implementing session handlers and SessionHandler to expose internal PHP session handlers.
| snmp_set_valueretrieval | Constants 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.
| sort | Added support for SORT_NATURAL and SORT_FLAG_CASE as sort_flags
| PDOStatement::getColumnMeta | PDO_DBLIB driver support added
| Phar::setStub | Added len parameter.
| PharData::setStub | Added len parameter.
| SimpleXMLElement::getDocNamespaces | Added from_root parameter.
| SoapClient::SoapClient | New keep_alive option.
5.4 | grapheme_substr | If 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.19 | imagecreatefromxpm | imagecreatefromxpm is available on Windows.
5.3.9 | DateTime::createFromFormat | The + format specifier has been added.
| dl | dl is enabled in PHP-FPM, albeit discouraged.
| is_a | Added allow_string parameter
| is_subclass_of | Added allow_string parameter
5.3.7 | crypt | Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
| curl_getinfo | Introduced CURLINFO_REDIRECT_URL.
| is_subclass_of | Added support for class_name to work with interfaces
5.3.6 | DateTime::modify | Absolute date/time statements now take effect. Previously, only relative parts were used.
| DOMDocument::saveHTML | The node parameter was added.
| array_product | The product of an empty array is now 1, when before this function would return 0 for an empty array.
| debug_backtrace | The parameter provide_object changed to options and additional option DEBUG_BACKTRACE_IGNORE_ARGS is added.
| debug_print_backtrace | Added the optional parameter options.
| preg_match | Returns FALSE if offset is higher than subject length.
| preg_match_all | Returns FALSE if offset is higher than subject length.
| PDO_MYSQL DSN | Prior to version 5.3.6, charset was ignored.
5.3.4 | copy | Changed the context parameter to actually have an effect. Previously, any context was ignored.
| get_html_translation_table | The encoding parameter was added.
| mt_rand | Issues an E_WARNING and returns FALSE if max < min.
| rawurlencode | Tilde characters are no longer encoded when rawurlencode is used with EBCDIC strings.
| sleep | Before PHP 5.3.4, on Windows, sleep always returns NULL when sleep has occurred, regardless of whether the sleep was interrupted or not.
| strip_tags | strip_tags ignores self-closing XHTML tags in allowable_tags.
| IntlDateFormatter::format | Support for providing DateTime objects to the value parameter was added.
| mysqli_driver::$report_mode | Changing the reporting mode is now be per-request, rather than per-process.
5.3.3 | DOMXPath::evaluate | The registerNodeNS parameter was added.
| DOMXPath::query | The registerNodeNS parameter was added.
| imap_fetch_overview | Add the udate property.
| json_encode | JSON_NUMERIC_CHECK options was added.
| ldap_sasl_bind | Support on Windows was added.
| openssl_decrypt | The iv parameter was added.
| openssl_encrypt | The iv parameter was added.
| parse_url | Removed the E_WARNING that was emitted when URL parsing failed.
5.3.2 (PECL OCI8 1.4) | oci_set_prefetch | Before this release, rows must be >= 1.
5.3.2 | crypt | Fixed Blowfish behaviour on invalid rounds to return "failure" string ("*0" or "*1"), instead of falling back to DES.
| crypt | Added SHA-256 and SHA-512 crypt based on Ulrich Drepper's implementation.
| flock | The automatic unlocking when the file's resource handle is closed was removed. Unlocking now always has to be done manually.
| gmp_init | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.
| gmp_strval | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.
| imap_append | Added INTERNALDATE support to imap_append.
| imap_open | params added
| SplFileObject::flock | The automatic unlocking when the file's resource handle is closed was removed. Unlocking now always has to be done manually.
5.3.1 | get_defined_constants | Windows only: Core constants are categorized under Core, previously mhash.
| ibase_query | On success the function now returns TRUE if there were no affected rows, where it previously returned 0 (a zero followed by an empty space).
| rename | rename can now rename files across drives in Windows.
5.3.0 (PECL OCI8 1.3.4) | oci_set_prefetch | Before 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.0 | DateTime::__construct | If time contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.
| DateTime::modify | Changed the return value on success from NULL to DateTime.
| DateTime::setDate | Changed the return value on success from NULL to DateTime.
| DateTime::setISODate | Changed the return value on success from NULL to DateTime.
| DateTime::setTime | Changed the return value on success from NULL to DateTime.
| DateTime::setTimezone | Changed the return value on success from NULL to DateTime.
| DateTimeZone::getTransitions | The optional timestamp_begin and timestamp_end were added.
| DateTimeZone::listIdentifiers | Added the optional what and country parameters.
| DirectoryIterator::__construct | Throws UnexpectedValueException if the path cannot be opened.
| acosh | This function is now available on all platforms
| array_multisort | The SORT_LOCALE_STRING was added to array1_sort_flags as possible sort flags.
| array_reduce | Changed initial to allow mixed, previously integer.
| array_search | As with all internal PHP functions as of 5.3.0, array_search returns NULL if invalid parameters are passed to it.
| asinh | This function is now available on all platforms
| atanh | This function is now available on all platforms
| call_user_func | The 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 | If the called function expects a parameter to be passed by reference, an E_WARNING is now issued.
| call_user_func_array | The 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.
| checkdnsrr | This function is now available on Windows platforms.
| clearstatcache | Added optional clear_realpath_cache and filename parameters.
| copy | Added context support.
| crypt | PHP 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_getinfo | Introduced CURLINFO_CERTINFO.
| curl_setopt | Introduced CURLOPT_PROGRESSFUNCTION.
| date_default_timezone_set | Now throws E_WARNING rather than E_STRICT.
| define_syslog_variables | This function now throws an E_DEPRECATED notice.
| dl | dl 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_record | This function is now available on Windows platforms.
| dns_get_record | Prior to this release, if the authns parameter was given, the addtl parameter was also required.
| error_reporting | E_DEPRECATED and E_USER_DEPRECATED introduced.
| exif_imagetype | Added icon support.
| expm1 | This function is now available on all platforms
| fgetcsv | The escape parameter was added
| fnmatch | This function is now available on Windows platforms.
| func_get_arg | This function can now be used in parameter lists.
| func_get_arg | If 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_args | If 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_args | This function can now be used in parameter lists.
| func_num_args | This function can now be used in parameter lists.
| func_num_args | If 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_info | JPG Support attribute renamed to JPEG Support.
| get_cfg_var | get_cfg_var was fixed to be able to return "array" ini options.
| get_class | NULL became the default value for object, so passing NULL to object now has the same result as not passing any value.
| get_defined_constants | Core constants are categorized under Core, previously internal. On Windows, the Core Constants are categorized under mhash.
| get_object_vars | This function now returns NULL if the object isn't an object. Previously FALSE was returned.
| get_resource_type | If handle is not a resource this functions returns NULL. Formerly, FALSE has been returned.
| getimagesize | Added icon support.
| getmxrr | This function is now available on Windows platforms.
| getopt | Added support for optional values (specified with "::").
| getopt | Added support for "=" as argument/value separator.
| getopt | This function is no longer system dependent, and now works on Windows, too.
| getopt | Parameter longopts is available on all systems.
| hash_algos | Support for md2, ripemd256, ripemd320, salsa10, salsa20, snefru256 and sha224 was added
| htmlentities | The constant ENT_IGNORE was added.
| htmlspecialchars | The constant ENT_IGNORE was added.
| imagecolorclosesthwb | This function is now available on Windows
| imagefilter | Pixelation support (IMG_FILTER_PIXELATE) was added.
| inet_ntop | This function is now available on Windows platforms.
| inet_pton | This function is now available on Windows platforms.
| ini_get | Previously, the empty string was returned if the configuration option didn't exist. now, FALSE is returned instead.
| ini_get_all | Added details.
| is_a | This function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
| json_decode | Added the optional depth. The default recursion depth was increased from 128 to 512
| json_encode | JSON_FORCE_OBJECT, JSON_HEX_AMP, JSON_HEX_APOS, JSON_HEX_QUOT, and JSON_HEX_TAG, options were added.
| json_encode | The options parameter was added.
| link | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| linkinfo | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| log1p | This function is now available on all platforms
| mb_get_info | The entry "http_output_conv_mimetypes" was made available.
| mcrypt_create_iv | MCRYPT_DEV_RANDOM and MCRYPT_DEV_URANDOM became available on Windows platforms.
| mcrypt_create_iv | It is no longer required to call srand first. This is now done automatically.
| mktime | mktime now throws E_DEPRECATED notice if the is_dst parameter is used.
| mysql_db_query | This function now throws an E_DEPRECATED notice.
| mysql_escape_string | This function now throws an E_DEPRECATED notice.
| mysqli_get_cache_stats | The mysqli_get_cache_stats was added as stub.
| nl2br | Added the optional is_xhtml parameter. Before this version '<br />' was always inserted.
| openssl_open | The method has been added.
| openssl_seal | The method has been added.
| parse_ini_file | Added 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_create | The optional object_id was added.
| pg_lo_import | The optional object_id was added.
| preg_quote | The - character is now quoted
| property_exists | This function checks the existence of a property independent of accessibility.
| rawurlencode | Now conforms to RFC 3986.
| readlink | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| realpath | Prior 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_function | Ticks are now supported on threaded web server modules.
| round | The mode parameter was introduced.
| session_start | If a session fails to start, then FALSE is returned. Previously TRUE was returned.
| setlocale | This function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.
| shm_attach | This function now returns a resource instead of an integer.
| socket_create_pair | This function is now available on Windows platforms.
| spl_autoload_register | Namespaces support was introduced.
| spl_autoload_register | The prepend parameter was added.
| stream_context_create | Added the optional params argument.
| stream_socket_pair | This function is now available on Windows platforms.
| stristr | Added the optional parameter before_needle.
| strlen | Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
| strstr | Added the optional parameter before_needle.
| strtotime | Prior 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.
| strtotime | Prior to PHP 5.3.0, 24:00 was not a valid format and strtotime returned FALSE.
| sybase_connect | The new parameter was added.
| symlink | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| time_nanosleep | This function is now available on Windows platforms.
| time_sleep_until | This function is now available on Windows platforms.
| touch | It became possible to change the modification time of a directory under Windows.
| mysqli::__construct | Added the ability of persistent connections.
| mysqli::options | The 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::query | Added the ability of async queries.
| PDO::__construct | Classes 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::__construct | name can now be a closure.
| SplFileObject::setCsvControl | Added the escape parameter.
| SplObjectStorage::attach | Added the data parameter.
| XMLReader::expand | The parameter basenode was added.
5.2.15 | mysqli_driver::$report_mode | Changing the reporting mode is now be per-request, rather than per-process.
5.2.11 | get_defined_constants | The 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.10 | array_rand | The resulting array of keys is no longer shuffled.
| array_unique | Changed the default value of sort_flags back to SORT_STRING.
| curl_setopt | Introduced CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
| ip2long | Prior to this version, ip2long would sometimes return a valid number even if passed a value which was not an (IPv4) Internet Protocol dotted address.
| natsort | Zero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.
5.2.9 | array_unique | Added 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.8 | XSLTProcessor::importStylesheet | Accepts SimpleXMLElement again which was broken since PHP 5.2.6.
5.2.7 | error_log | The possible value of 4 was added to message_type.
| parse_ini_file | On syntax error this function will return FALSE rather than an empty array.
| round | The inner workings of round was changed to conform to the C99 standard.
| strtotime | In 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.6 | fopen | The 'c' and 'c+' options were added
5.2.5 | addcslashes | The escape sequences \v and \f were added.
| debug_backtrace | Added the optional parameter provide_object.
| imagefilter | Alpha support for IMG_FILTER_COLORIZE was added.
5.2.4 | array_slice | The 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).
| checkdnsrr | TXT type was added.
| curl_getinfo | Introduced CURLINFO_PRIVATE.
| curl_setopt | Introduced CURLOPT_PRIVATE.
| get_loaded_extensions | The optional zend_extensions parameter was added
| ldap_first_attribute | The ber_identifier was removed. This is now handled automatically by PHP.
| ldap_next_attribute | The ber_identifier was removed. This is now handled automatically by PHP.
| parse_ini_file | Keys 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_register | Added the flags parameter.
5.2.3 | getimagesize | Read errors generated by this function downgraded to E_NOTICE from E_WARNING.
| htmlentities | The double_encode parameter was added.
| htmlspecialchars | The double_encode parameter was added.
| json_decode | The nesting limit was increased from 20 to 128
| XMLWriter::writeElement | The content parameter became optional.
| XMLWriter::writeElementNs | The content parameter became optional.
| PDOStatement::getColumnMeta | table field
5.2.2 - 5.2.6 | substr | If the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.
5.2.2 | DOMDocument::registerNodeClass | Prior 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_info | The order of latitude and longitude has been swapped.
| ftp_ssl_connect | The 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.
| phpinfo | The "Loaded Configuration File" information was added, when before only "Configuration File (php.ini) Path" existed.
| preg_match | Named subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
| preg_match_all | Named subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
| proc_terminate | Previous versions used to destroy the given process resource.
| token_get_all | Line numbers are returned in element 2
5.2.1 | iterator_to_array | The use_keys parameter was added.
| json_decode | Added support for JSON decoding of basic types.
| memory_get_peak_usage | Compiling with --enable-memory-limit is no longer required for this function to exist.
| memory_get_usage | Compiling with --enable-memory-limit is no longer required for this function to exist.
| mt_srand | The 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_open | Added the bypass_shell option to the other_options parameter.
| realpath | Prior to this version, realpath returned FALSE if path is an empty string or NULL.
5.2.0 | base64_decode | strict added
| curl_multi_info_read | msgs_in_queue was added.
| error_reporting | E_RECOVERABLE_ERROR introduced.
| imagettftext | It is now possible to specify an hexadecimal entity in text.
| imap_open | n_retries added
| imap_reopen | n_retries added
| mb_strrpos | Added the optional parameter offset.
| memory_get_peak_usage | real_usage was added.
| memory_get_usage | real_usage was added.
| openssl_verify | The signature_alg parameter was added.
| pathinfo | The PATHINFO_FILENAME constant was added.
| pg_escape_bytea | connection added
| pg_escape_string | connection added
| session_get_cookie_params | The "httponly" entry was added in the returned array.
| session_set_cookie_params | The httponly parameter was added.
| set_error_handler | The error handler must return FALSE to populate $php_errormsg.
| setcookie | The httponly parameter was added.
| setrawcookie | The httponly parameter was added.
| snmp_set_oid_numeric_print | Since PHP 5.2.0.
| PDOStatement::execute | The keys from input_parameters must match the ones declared in the SQL. Before PHP 5.2.0 this was silently ignored.
| SimpleXMLElement::children | The optional parameter is_prefix was added.
| SimpleXMLElement::__construct | Added the ns and is_prefix parameters.
| SoapServer::SoapServer | Added the typemap option.
| XMLReader::open | encoding and options were added.
| XMLReader::XML | encoding and options were added.
5.1.3 | DirectoryIterator::__construct | Throws RuntimeException if the path is an empty string.
| curl_getinfo | Introduced CURLINFO_HEADER_OUT.
| get_headers | This function now uses the default stream context, which can be set/changed with the stream_context_set_default function.
| http_build_query | Square brackets are escaped.
| imagecolorallocate | Returns FALSE if the allocation failed. Previously -1 was returned.
| imagecolorallocatealpha | Returns FALSE if the allocation failed. Previously -1 was returned.
| imagepng | Added the filters parameter.
| mb_get_info | The entries "mail_charset", "mail_header_encoding", and "mail_body_encoding" were made available.
| SoapClient::__doRequest | The one_way parameter was added.
| XMLReader::getAttribute | Return NULL if no attribute found. Previously, returned an empty string.
5.1.2 | date_default_timezone_set | The function started to validate the timezone_identifier parameter.
| header | This function now prevents more than one header to be sent at once as a protection against header injection attacks.
| http_build_query | The arg_separator parameter was added.
| imagepng | Added the quality parameter.
| parse_url | Added the component parameter.
| SimpleXMLElement::__construct | Added the options and data_is_url parameters.
5.1.1 | date | There are useful constants of standard date/time formats that can be used to specify the format parameter.
| debug_backtrace | Added the current object as a possible return element.
| gmdate | There are useful constants of standard date/time formats that can be used to specify the format parameter.
5.1.0 | DirectoryIterator::__construct | Throws RuntimeException on error. Previously, threw Exception.
| DOMDocument::save | Added the options parameter
| DOMDocument::saveXML | Added the options parameter
| class_implements | Added the option to pass the class parameter as a string. Added the autoload parameter.
| class_parents | Added the option to pass the class parameter as a string. Added the autoload parameter.
| ctype_digit | Before PHP 5.1.0, this function returned TRUE when text was an empty string.
| curl_setopt | Introduced CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
| date | The 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).
| date | Now issues the E_STRICT and E_NOTICE time zone errors.
| date_sunrise | Now issues the E_STRICT and E_NOTICE time zone errors.
| date_sunset | Now issues the E_STRICT and E_NOTICE time zone errors.
| explode | Support for negative limits was added
| fgetcsv | The length is now optional. Default is 0, meaning no length limit.
| file_get_contents | Added the offset and maxlen parameters.
| file_put_contents | Added support for LOCK_EX and the ability to pass a stream resource to the data parameter
| get_parent_class | If called without parameter outside object, this function would have returned NULL with a warning, but now returns FALSE.
| gettimeofday | The return_float parameter was added.
| glob | GLOB_ERR was added
| gmdate | The 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).
| gmmktime | As of PHP 5.1.0, the is_dst parameter became deprecated. As a result, the new timezone handling features should be used instead.
| idate | Now issues the E_STRICT and E_NOTICE time zone errors.
| imagerotate | ignore_transparent was added.
| intval | Throws E_NOTICE and returns 1, when an object is passed to var.
| localtime | Now issues the E_STRICT and E_NOTICE time zone errors.
| md5_file | Changed the function to use the streams API. It means that you can use it with wrappers, like md5_file('http://example.com/..')
| mktime | When called with no arguments, mktime throws E_STRICT notice. Use the time function instead.
| mktime | The 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.
| mktime | Now issues the E_STRICT and E_NOTICE time zone errors.
| mssql_connect | The new_link parameter was added
| openssl_pkcs7_verify | The content parameter was added.
| preg_replace | Added the count parameter
| preg_replace_callback | The count parameter was added
| session_regenerate_id | Added the delete_old_session parameter.
| sha1_file | Changed the function to use the streams API. It means that you can use it with wrappers, like sha1_file('http://example.com/..')
| str_word_count | Added the charlist parameter
| stream_copy_to_stream | Added the offset parameter
| stream_filter_append | Prior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
| stream_filter_prepend | Prior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
| stream_get_contents | The offset was added.
| strftime | Now issues the E_STRICT and E_NOTICE time zone errors.
| strtotime | Now returns FALSE on failure, instead of -1.
| strtotime | Now issues the E_STRICT and E_NOTICE time zone errors.
| substr_compare | Added the possibility to use a negative offset.
| substr_count | Added the offset and the length parameters
| var_export | Made it possible to export classes and arrays containing classes using the __set_state() magic method.
| XSLTProcessor::registerPHPFunctions | The restrict parameter was added.
5.0.5 | php_check_syntax | This function was removed from PHP.
5.0.4 | msql_fetch_array | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
| msql_fetch_object | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
| msql_fetch_row | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
5.0.3 | get_class_vars | get_class_vars will only return the properties that can be accessed from the current scope.
| is_subclass_of | You may also specify the object parameter as a string (the name of the class)
| php_check_syntax | Calling exit after php_check_syntax resulted in a Segfault.
5.0.2 | array_slice | The optional preserve_keys parameter was added.
| class_exists | No longer returns TRUE for defined interfaces. Use interface_exists.
| get_class_vars | Calling 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.
| sort | Added SORT_LOCALE_STRING
| strtotime | In 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.1 | get_class_vars | Calling get_class_vars will expose all properties, as when converting an object to a class.
| php_check_syntax | error_message is passed by reference.
5.0.0 | curl_setopt | Introduced CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.
| is_a | This function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.
| strtotime | Microseconds began to be allowed, but they are ignored.