# Changelog

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

Version | Function | Description
--- | --- | ---
PECL OCI8 1.4 | oci_set_prefetch | Before this release, rows must be >= 1.
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.
PECL 3.0.0 | IntlDateFormatter::format | Support for providing IntlCalendar objects to the value parameter was added.
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.
8.0.0 | imagexbm | The fourth parameter, which was unused, has been removed.
| mb_parse_str | The second parameter was no longer optional.
| mb_regex_set_options | If the parameter options is given, the previous options are returned. Formerly, the current options have been returned.
| zip_close | This function is deprecated in favor of the Object API, see ZipArchive::close.
| zip_entry_close | This function is deprecated in favor of the Object API.
| zip_entry_compressedsize | This function is deprecated in favor of the Object API, see ZipArchive::statIndex.
| zip_entry_compressionmethod | This function is deprecated in favor of the Object API, see ZipArchive::statIndex.
| zip_entry_filesize | This function is deprecated in favor of the Object API, see ZipArchive::statIndex.
| zip_entry_name | This function is deprecated in favor of the Object API, see ZipArchive::statIndex.
| zip_entry_open | This function is deprecated in favor of the Object API.
| zip_entry_read | This function is deprecated in favor of the Object API, see ZipArchive::getFromIndex.
| zip_open | This function is deprecated in favor of the Object API, see ZipArchive::open.
| zip_read | This function is deprecated in favor of the Object API, see ZipArchive::statIndex.
| ReflectionParameter::getDefaultValue | This method now allows getting the default value of parameters of built-in functions and built-in class methods. Previously, a ReflectionException was thrown.
| ReflectionParameter::getDefaultValueConstantName | This method now allows getting the default values' constant names of built-in functions and built-in class methods. Previously, a ReflectionException was thrown.
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.
| chr | The function no longer silently accepts unsupported bytevalues, and casts these to 0.
| 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_declared_classes | Previously get_declared_classes always returned parent classes before child classes. This is no longer the case. No particular order is guaranteed for the get_declared_classes return value.
| get_magic_quotes_gpc | This function has been deprecated.
| get_magic_quotes_runtime | This function has been deprecated.
| hash_algos | Support for crc32c has been added.
| 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 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.
| 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.
| 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.
| password_hash | The algo parameter expects a string now, but still accepts ints for backward compatibility.
| password_needs_rehash | The algo parameter expects a string now, but still accepts ints for backward compatibility.
| preg_replace_callback | The flags parameter was added.
| preg_replace_callback_array | The flags parameter was added.
| 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.
| stat | On Windows, the device number is now the serial number of the volume that contains the file, and the inode number is the identifier associated with the file.
| stat | The size, atime, mtime and ctime statistics of symlinks are always those of the target. This was previously not the case for NTS builds on Windows.
| 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::fwrite | The function now returns FALSE instead of zero on failure.
| 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.24, 7.4.12 | jdtounix | The upper limit of jday has been extended. Previously, it was 2465342 regardless of the architecture.
| tidyNode::isHtml | This function has been fixed to have reasonable behavior. Previously, almost any node was reported as being an HTML node.
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.
| list | Support for reference assignments in array destructuring 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.
| stripos | Passing an int as needle has been deprecated.
| stristr | Passing an int as needle has been deprecated.
| strpos | Passing an int as needle has been deprecated.
| strrchr | Passing an int as needle has been deprecated.
| strripos | Passing an int as needle has been deprecated.
| strrpos | Passing an int as needle has been deprecated.
| strstr | Passing an int as needle has been deprecated.
| 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 | dividend and divisor are no longer truncated to integer, so now the behavior of bcmod follows fmod rather than the % operator.
| bcmod | The scale parameter was added.
| 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 | Support for the following EXIF formats were added: Samsung DJI Panasonic Sony Pentax Minolta Sigma/Foveon AGFA Kyocera Ricoh Epson
| exif_read_data | The filename parameter was renamed to stream and now supports both local files or stream resources.
| exif_thumbnail | The filename parameter was renamed to stream and now supports both local files or stream resources.
| get_class | Prior to this version the default value for object was NULL and it had the same effect as not passing any value. Now NULL has been 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 | Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) with HASH_HMAC was disabled.
| hash_init | Return HashContext instead of resource.
| 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_decode | assoc is nullable now.
| 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_parse_str | Calling mb_parse_str without the second parameter was deprecated.
| 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::__construct | From now on microseconds are filled with actual value. Not with '00000'.
| DateTime::setTime | The microsecond 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 | serialize_precision is used instead of precision when encoding double values.
| json_encode | JSON_UNESCAPED_LINE_TERMINATORS options was added.
| 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 int.
| 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 | srand has been made an alias of mt_srand.
| 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.
| 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 bool is given, unserialize returns FALSE and issues an E_WARNING.
| ReflectionType::__toString | ReflectionType::__toString has been deprecated.
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 | imagetypes | IMG_WEBP added.
| 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.
| 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.
| getrusage | This function is now supported on Windows.
| is_numeric | Strings in hexadecimal (e.g. 0xf4c3b00c) notation are no longer regarded as numeric strings, i.e. is_numeric returns FALSE now.
| key | array is now always passed by value. Prior to this version, it was passed by reference if possible, and by value otherwise.
| list | The order that the assignment operations are performed in has changed.
| list | Strings can no longer be unpacked.
| list | list expressions can no longer be completely empty.
| set_exception_handler | The type of parameter passed into exception_handler changed from Exception to Throwable
| 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.
| unserialize | The options parameter has been added.
| IntlDateFormatter::setTimeZoneId | This function has been removed.
5.6.25, 7.0.10 | 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.3 | pack | The "q", "Q", "J" and "P" codes were added to enable working with 64-bit numbers.
5.6.1 | 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
| mb_regex_encoding | Default encoding is changed to UTF-8. It was EUC-JP Previously.
| 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.21, 5.6.5 | SplFileObject::fputcsv | Added the escape parameter.
5.5.19, 5.6.3 | DateTimeZone::getOffset | datetime type changed to DateTimeInterface. Previously, DateTime.
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.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 | pg_unescape_bytea | A warning is thrown if the input string is invalid.
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::setCalendar | It became possible to pass an IntlCalendar object.
5.5.0 | DatePeriod::__construct | start type changed to DateTimeInterface. Previously, DateTime.
| 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.
| set_exception_handler | Previously, if NULL was passed then this function returned TRUE. It returns the previous handler since PHP 5.5.0.
| 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.
| IntlDateFormatter::setTimeZoneId | This function has been deprecated.
| mysqli::commit | Added flags and name parameters.
| mysqli::rollback | Added flags and name parameters.
5.4.0 | define_syslog_variables | This function was removed from PHP.
5.3.15, 5.4.5 | Collator::getSortKey | Sort keys do no longer contain any NUL bytes.
5.3.0 | define_syslog_variables | This function now throws an E_DEPRECATED notice.
5.2.0 | simplexml_load_file | The optional parameter is_prefix was added.
| simplexml_load_string | The optional parameter is_prefix was added.
| SimpleXMLElement::attributes | The optional parameter is_prefix was added.
| SimpleXMLElement::__construct | Added the ns and is_prefix parameters.
5.1.2 | SimpleXMLElement::__construct | Added the options and data_is_url parameters.