Changelog

- « Example listing

- PHP Manual
- Appendices
- Changelog

# Changelog

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

Version | Function | Description
--- | --- | ---
8.4.0 | DOMDocument::registerNodeClass | DOMDocument::registerNodeClass now has a tentative return of true.
| DOMImplementation::createDocument | The function now has the tentative return type DOMDocument.
| DOMXPath::registerPhpFunctions | It is now possible to use callables for callbacks when using restrict with array entries.
| bcpow | Negative powers of 0 previously returned 0, but now throw a DivisionByZeroError exception.
| bind_textdomain_codeset | Now throws a ValueError if domain is the empty string.
| bind_textdomain_codeset | codeset is optional now. Previously, the parameter always had to be specified.
| bindtextdomain | directory is optional now. Previously, the parameter always had to be specified.
| curl_getinfo | Introduced CURLINFO_POSTTRANSFER_TIME_T constant and posttransfer_time_us (Curl 8.10.0 or later).
| curl_multi_select | Now throws a ValueError if timeout is less than 0 or greater than PHP_INT_MAX.
| curl_setopt | CURLOPT_DNS_USE_GLOBAL_CACHE no longer has any effect, and enabling it on thread-safe PHP builds no longer triggers a warning.
| curl_version | features_list added.
| dba_close | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_delete | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_exists | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_fetch | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_firstkey | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_insert | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_key_split | Passing null or false to key is now deprecated.
| dba_nextkey | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_open | Returns a Dba\Connection instance now; previously, a resource was returned.
| dba_optimize | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_popen | Returns a Dba\Connection instance now; previously, a resource was returned.
| dba_replace | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dba_sync | The dba parameter expects a Dba\Connection instance now; previously, a valid dba resource was expected.
| dgettext | Now throws a ValueError if domain is the empty string.
| dngettext | Now throws a ValueError if domain is the empty string.
| exit | exit is now a proper function, therefore it follows the usual type juggling semantics is affected by the strict_types declare, can be called with named arguments, and be a variable functions.
| fgetcsv | Relying on the default value of escape is now deprecated.
| flush | Flushing headers without a body will now succeed in FastCGI.
| fputcsv | Relying on the default value of escape is now deprecated.
| hash_init | Passing options of a wrong type is now deprecated.
| hash_update | Now has a return type of true instead of bool.
| highlight_string | Return type changed from stringbool to stringtrue.
| imageavif | Now throws a ValueError if quality or speed is invalid.
| imagefilter | Now throws a ValueError if sub or plus would cause over-/underflow with the IMG_FILTER_SCATTER filter.
| imagejpeg | Now throws a ValueError if quality is invalid.
| imagepng | Now throws a ValueError if quality is invalid.
| imagescale | Now throws a ValueError if width or height would cause over-/underflow.
| imagescale | Now throws a ValueError if mode is invalid.
| imagewebp | Now throws a ValueError if quality is invalid.
| lcg_value | This function has been deprecated.
| libxml_set_streams_context | libxml_set_streams_context now throws a TypeError when a non-stream resource is passed to context, instead of throwing later when the context is used.
| long2ip | Return type changed from stringfalse to string.
| mb_decode_numericentity | mb_decode_numericentity now throws a ValueError if map is not a list of ints.
| mb_encode_numericentity | mb_encode_numericentity now throws a ValueError if map is not a list of ints.
| mb_http_input | mb_http_input now throws a ValueError if type is invalid.
| mb_http_output | mb_http_output now throws a ValueError if encoding contains null bytes.
| odbc_autocommit | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_binmode | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_close | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_columnprivileges | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_columns | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_commit | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_connect | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_connect | This function returns a Odbc\Connection instance now; previously, a resource was returned.
| odbc_cursor | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_data_source | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_error | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_errormsg | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_exec | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_exec | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_execute | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_fetch_array | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_fetch_array | row is now nullable.
| odbc_fetch_into | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_fetch_into | row is now nullable.
| odbc_fetch_object | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_fetch_object | row is now nullable.
| odbc_fetch_row | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_field_len | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_field_name | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_field_num | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_field_scale | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_field_type | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_foreignkeys | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_foreignkeys | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_free_result | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_gettypeinfo | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_gettypeinfo | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_longreadlen | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_next_result | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_num_fields | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_num_rows | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_pconnect | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_pconnect | This function returns a Odbc\Connection instance now; previously, a resource was returned.
| odbc_prepare | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_prepare | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_primarykeys | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_primarykeys | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_procedurecolumns | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_procedurecolumns | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_procedures | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_procedures | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_result | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_result_all | statement expects an Odbc\Result instance now; previously, a resource was expected.
| odbc_rollback | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_setoption | odbc expects an Odbc\Connection or an Odbc\Result instance now; previously, a resource was expected.
| odbc_specialcolumns | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_specialcolumns | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_statistics | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_statistics | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_tableprivileges | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_tableprivileges | This function returns an Odbc\Result instance now; previously, a resource was returned.
| odbc_tables | odbc expects an Odbc\Connection instance now; previously, a resource was expected.
| odbc_tables | This function returns an Odbc\Result instance now; previously, a resource was returned.
| pcntl_sigprocmask | A ValueError is thrown if signal is empty.
| pcntl_sigprocmask | A TypeError is thrown if signal value is not an int.
| pcntl_sigprocmask | A ValueError is thrown if signal value is invalid.
| pcntl_sigprocmask | A ValueError is thrown if mode value is not SIG_BLOCK, SIG_UNBLOCK or SIG_SETMASK.
| pcntl_sigtimedwait | A ValueError is thrown if signal is empty.
| pcntl_sigtimedwait | A TypeError is thrown if signal value is not an int.
| pcntl_sigtimedwait | A ValueError is thrown if signal value is invalid.
| pcntl_sigtimedwait | A ValueError is thrown if seconds value is less than 0.
| pcntl_sigtimedwait | A ValueError is thrown if nanoseconds value is less than 0.
| pcntl_sigtimedwait | A ValueError is thrown if both seconds and nanoseconds values are 0.
| pcntl_sigwaitinfo | A ValueError is thrown if signal is empty.
| pcntl_sigwaitinfo | A TypeError is thrown if signal value is not an int.
| pcntl_sigwaitinfo | A ValueError is thrown if signal value is invalid.
| pg_select | conditions is now optional.
| php_uname | Throws a ValueError when an invalid mode is specified.
| posix_isatty | Set errno (error number) to EBADF when the file descriptor/stream passed is invalid.
| pow | Raising 0 to a negative exponent is now deprecated.
| print_r | Return type changed from stringbool to stringtrue.
| simplexml_import_dom | This function now throws a TypeError instead of a ValueError when passed a non-XML or non-HTML node.
| socket_create_listen | The default value of is now SOMAXCONN. Previously it was 128.
| str_getcsv | Relying on the default value of escape is now deprecated.
| str_getcsv | Now throws a ValueError if separator, enclosure, or escape is invalid. This mimics the behavior of fgetcsv and fputcsv.
| strcspn | Prior to PHP 8.4.0, when characters was the empty string, the search would incorrectly stop at the first null byte in string.
| stream_context_set_option | The alternative 2-parameter signature is now deprecated. Use stream_context_set_options instead.
| textdomain | Now throws a ValueError if domain is the empty string.
| textdomain | domain is optional now. Previously, the parameter always had to be specified.
| trigger_error | Passing E_USER_ERROR as the error_level is now deprecated. Throw an Exception or call exit instead.
| trigger_error | The function now has a return type of true instead of bool.
| xml_parser_set_option | Added the option XML_OPTION_PARSE_HUGE.
| xml_set_character_data_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_character_data_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_default_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_default_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_element_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_element_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_end_namespace_decl_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_end_namespace_decl_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_external_entity_ref_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_external_entity_ref_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_notation_decl_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_notation_decl_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_object | This function is now deprecated, instead pass proper callable values to xml_set_
| xml_set_processing_instruction_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_processing_instruction_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_start_namespace_decl_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_start_namespace_decl_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| xml_set_unparsed_entity_decl_handler | Passing a non-callable string to handler is now deprecated, use a proper callable for methods, or null to reset the handler.
| xml_set_unparsed_entity_decl_handler | The validity of handler as a callable is now checked when setting the handler instead of checking when calling it.
| IntlCalendar::set | This had been deprecated in favor of the methods IntlCalendar::setDate and IntlCalendar::setDateTime.
| IntlDateFormatter::create | A ValueError is thrown if locale is invalid.
| IntlGregorianCalendar::__construct | This had been deprecated in favor of the methods IntlGregorianCalendar::createFromDate and IntlGregorianCalendar::createFromDateTime.
| mysqli::kill | Both mysqli::kill and mysqli_kill are now deprecated. Use the KILL SQL command instead.
| mysqli::ping | Both mysqli::ping and mysqli_ping are now deprecated. The reconnect feature has not been available as of PHP 8.2.0, making this function obsolete.
| mysqli::refresh | Both mysqli::refresh and mysqli_refresh are now deprecated. Use FLUSH SQL commands instead.
| mysqli::store_result | Passing the mode parameter is now deprecated. The parameter has had no effect as of PHP 8.1.0.
| NumberFormatter::create | A ValueError is thrown if locale is invalid.
| Phar::setAlias | Phar::setAlias now has a tentative return of true.
| Phar::setDefaultStub | Phar::setDefaultStub now has a tentative return of true.
| ReflectionClassConstant::__toString | The attached doc comment is now included.
| ReflectionGenerator::getFunction | ReflectionGenerator::getFunction may now be called after the generator finished executing.
| ReflectionProperty::__toString | The attached doc comment is now included.
| ResourceBundle::get | A TypeError is thrown if the offset type is invalid. A ValueError is thrown if if index is a string and is empty or is a int and does not fit into a 32 bit integer type.
| SplFileObject::fgetcsv | Relying on the default value of escape is now deprecated.
| SplFileObject::fputcsv | Relying on the default value of escape is now deprecated.
| SplFileObject::setCsvControl | Relying on the default value of escape is now deprecated.
| SplFixedArray::setSize | SplFixedArray::setSize now has a tentative return of true.
| SplFixedArray::__wakeup | This method is now deprecated, use SplFixedArray::__unserialize instead.
| SplHeap::insert | SplHeap::insert now has a tentative return of true.
| SplHeap::recoverFromCorruption | SplHeap::recoverFromCorruption now has a tentative return of true.
| SplPriorityQueue::insert | SplPriorityQueue::insert now has a tentative return of true.
| SplPriorityQueue::recoverFromCorruption | SplPriorityQueue::recoverFromCorruption now has a tentative return of true.
| tidy::__construct | Failures when executing the constructor now throw instead of silently creating an unusable object.
| XMLReader::open | Passing an invalid encoding will now throw a ValueError.
| XMLReader::XML | Passing an invalid encoding will now throw a ValueError.
| XMLWriter::startDocument | Passing an encoding containing null bytes will now throw a ValueError.
| XSLTProcessor::importStylesheet | Now throws a TypeError instead of a ValueError if stylesheet is not an XML object.
| XSLTProcessor::registerPHPFunctions | It is now possible to use callables for callbacks when using restrict with array entries.
| XSLTProcessor::setParameter | Now throws a ValueError if any of the arguments contain null bytes instead of silently truncating.
| XSLTProcessor::setParameter | It is now possible to set a parameter value containing both single and double quotes. Prior to PHP 8.4.0, this resulted in a warning.
8.3.0 | DateInterval::__construct | Now throws DateMalformedIntervalStringException instead of Exception.
| DateInterval::createFromDateString | DateInterval::createFromDateString now throws DateMalformedStringException if an invalid string is passed. Previously, it returned false, and a warning was emitted. date_interval_create_from_date_string has not been changed.
| DatePeriod::__construct | Now throws DateMalformedPeriodStringException instead of Exception.
| DateTime::__construct | Now throws DateMalformedStringException if an invalid string is passed, instead of Exception.
| DateTimeInterface::getTimestamp | The out-of-range exception is now DateRangeError.
| DateTime::modify | DateTime::modify now throws DateMalformedStringException if an invalid string is passed. Previously, it returned false, and a warning was emitted. date_modify has not been changed.
| DateTime::sub | Now throws a DateInvalidOperationException with DateTime::sub, instead of a warning when an unsupported operation is attempted. date_sub has not been changed.
| DateTimeImmutable::__construct | Now throws DateMalformedStringException if an invalid string is passed, instead of Exception.
| DateTimeImmutable::modify | DateTimeImmutable::modify now throws DateMalformedStringException if an invalid string is passed. Previously, it returned false, and a warning was emitted.
| DateTimeImmutable::sub | Now throws a DateInvalidOperationException instead of a warning when an unsupported operation is attempted.
| DateTimeZone::__construct | Invalid values now return a DateInvalidTimeZoneException instead of a generic Exception.
| DOMCharacterData::after | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMCharacterData::after | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMCharacterData::appendData | This function now has a tentative true return type.
| DOMCharacterData::before | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMCharacterData::replaceWith | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::after | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::after | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::before | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::replaceWith | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::createAttributeNS | Calling this method without specifying a prefix will now choose a prefix instead of assuming the default namespace. Previously this would create an attribute without a prefix and incorrectly apply the namespace to the owner element because default namespaces don't apply on attributes.
| DOMDocument::createAttributeNS | Calling this method using a prefix that was already declared on the owner element with a different namespace URI will now change the new prefix to avoid creating namespace conflicts. This aligns the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_NAMESPACE_ERR.
| DOMDocument::load | This function now has a tentative bool return type.
| DOMDocument::loadHTML | This function now has a tentative bool return type.
| DOMDocument::loadHTMLFile | This function now has a tentative bool return type.
| DOMDocument::loadXML | This function now has a tentative bool return type.
| DOMDocument::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::saveXML | LIBXML_NOXMLDECL is now supported.
| DOMDocumentFragment::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocumentFragment::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocumentFragment::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::after | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::after | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::before | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::replaceWith | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMParentNode::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMParentNode::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMParentNode::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| FFI::cast | Calling FFI::cast statically is now deprecated.
| FFI::cdef | C functions returning void return a PHP null instead of FFI\CType::TYPE_VOID.
| FFI::load | FFI::load is now allowed in preload scripts when the current system user is the same as the one defined in the opcache.preload_user configuration directive.
| FFI::new | Calling FFI::new statically is now deprecated.
| FFI::type | Calling FFI::type statically is now deprecated.
| array_pad | Prior to 8.3, only 1048576 elements could be added at once. Now it is limited only by the maximum size of an array instead.
| array_product | Now emits E_WARNING when array values cannot be converted to int or float. Previously arrays and objects where ignored whilst every other value was cast to int. Moreover, objects that define a numeric cast (e.g. GMP) are now cast instead of ignored.
| array_sum | Now emits E_WARNING when array values cannot be converted to int or float. Previously arrays and objects where ignored whilst every other value was cast to int. Moreover, objects that define a numeric cast (e.g. GMP) are now cast instead of ignored.
| assert | All assert. INI settings have been deprecated.
| assert_options | assert_option is now deprecated.
| class_alias | class_alias now supports creating an alias of an internal class.
| curl_getinfo | Introduced CURLINFO_CAINFO and CURLINFO_CAPATH.
| dba_fetch | Calling dba_fetch with dba as the 3rd argument is now deprecated.
| easter_date | On 64-bit systems, the year parameter now accepts values within the range of 1970 to 2,000,000,000.
| fgetcsv | An empty string is returned instead of a string with a single null byte for the last field if it contains only an unterminated enclosure.
| file | ValueError is thrown for any invalid values of flags.
| gc_status | gc_status now returns the following additional fields: "running", "protected", "full", "buffer_size", "application_time", "collector_time", "destructor_time", and "free_time".
| get_class | Calling get_class without an argument now emits an E_DEPRECATED warning; previously, calling this function inside a class returned the name of that class.
| get_parent_class | Calling get_parent_class without an argument now emits an E_DEPRECATED warning; previously, calling this function inside a class returned the name of that class.
| highlight_file | The resulting HTML has changed.
| highlight_string | The resulting HTML has changed.
| imagerotate | The unused ignore_transparent has been completely removed.
| ldap_connect | Calling ldap_connect with separate hostname and port is now deprecated.
| mb_convert_case | Implemented conditional casing rules for the Greek letter sigma which only apply to MB_CASE_LOWER and MB_CASE_TITLE modes, not to MB_CASE_LOWER_SIMPLE and MB_CASE_TITLE_SIMPLE.
| mb_decode_mimeheader | Underscores are converted to spaces as specified by RFC 2047.
| mb_encode_mimeheader | NUL (0) bytes are no longer dropped when encoded using Quoted-Printable encoding, but encoded as =00.
| mb_strimwidth | Passing a negative width to mb_strimwidth is now deprecated.
| mb_strtolower | Implemented conditional casing rules for the Greek letter sigma.
| mt_srand | seed is now nullable.
| number_format | Added handling of negative values for decimals.
| odbc_autocommit | enable is now nullable.
| password_hash | password_hash now sets the underlying Random\RandomException as the Exception::$previous exception when a ValueError is thrown due to a failure in the salt generation.
| pg_convert | Now throws a ValueError or TypeError error when the value or type of field does not match properly with a PostgreSQL's type; previously an E_WARNING was emitted.
| pg_fetch_object | Now throws a ValueError exception when the constructor_args is non-empty with the class not having constructor; previously an Exception was thrown.
| pg_fetch_result | row is now nullable.
| pg_field_is_null | row is now nullable.
| pg_field_prtlen | row is now nullable.
| pg_insert | Now throws a ValueError error when the specified table is invalid; previously an E_WARNING was emitted.
| pg_insert | Now throws a ValueError or TypeError error when the value or type of field does not match properly with a PostgreSQL's type; previously an E_WARNING was emitted.
| pg_trace | trace_mode has been added.
| posix_eaccess | Checks the effective user/group for a file, differing from posix_access which checks from the real user/group.
| posix_getrlimit | The optional resource parameter has been added.
| posix_isatty | Type error E_WARNINGs are now raised for integer coercions following the usual PHP type coercion semantics.
| posix_ttyname | Type error E_WARNINGs are now raised for integer coercions following the usual PHP type coercion semantics.
| posix_ttyname | On invalid file_descriptor integer values an E_WARNING is now raised.
| proc_get_status | The "cached" entry has been added to the returned array. Prior to PHP 8.3.0, only the first call returned the real exit code. The "cached" entry indicates that the exit code was cached.
| proc_open | A ValueError will be thrown if command is an array without at least one non-empty element.
| range | If both start and end are strings then range will now always produce an array of bytes. Previously if one of the boundary values was a numeric string, then the other boundary value was implicitly cast to int.
| range | An E_WARNING is now emitted if start or end is a string that is implicitly cast to int because the other boundary value is a number.
| range | An E_WARNING is now emitted if start or end is a non-numeric string with more than one byte.
| range | An E_WARNING is now emitted if start or end is the empty string.
| range | If step is a float with no fractional part, it will be interpreted as an int.
| range | A ValueError is now thrown if step is negative when producing an increasing range.
| range | A ValueError is now thrown if step is not finite.
| range | A TypeError is now thrown if start or end is an array, object, or resource. Previously they were implicitly cast to int.
| srand | seed is now nullable.
| str_getcsv | An empty string is returned instead of a string with a single null byte for the last field if it contains only an unterminated enclosure.
| stream_notification_callback | Support for STREAM_NOTIFY_COMPLETED implemented, earlier PHP versions would never trigger this notification.
| strrchr | The before_needle parameter was added.
| strtok | Now emits E_WARNING when token is not provided.
| unserialize | Now emits E_WARNING when the input string has unconsumed data.
| unserialize | Now emits E_WARNING when the passed string is not unserializeable; previously E_NOTICE was emitted.
| xml_parser_get_option | The function now returns a boolean for boolean options.
| xml_parser_set_option | The value parameter now also accepts booleans. The options XML_OPTION_CASE_FOLDING and XML_OPTION_SKIP_WHITE are now boolean options.
| IntlBreakIterator::setText | This method now returns false on failure; previously it returns null.
| IntlChar::enumCharNames | This method now returns false on failure; previously it returns null.
| IntlDateFormatter::setTimeZone | This function now returns true on success; previously it returns null.
| mysqli_result::fetch_object | Now throws a ValueError exception when the constructor_args is non-empty with the class not having constructor; previously an Exception was thrown.
| mysqli::poll | Now throws a ValueError exception when neither the read nor error arguments are passed.
| Phar::setStub | Calling Phar::setStub with a resource and a length is now deprecated. Such calls should be replaced by: $phar->setStub(stream_get_contents($resource));
| ReflectionClass::getStaticProperties | The return type of ReflectionClass::getStaticProperties has been changed to array from ?array.
| ReflectionProperty::setValue | Calling this method with a single argument is deprecated, ReflectionClass::setStaticPropertyValue should be used instead to modify static properties.
| SQLite3::enableExceptions | Calling SQLite3::enableExceptions with enable as false will trigger a E_DEPRECATED warning.
| ZipArchive::addFile | ZipArchive::FL_OPEN_FILE_NOW was added.
| ZipArchive::addFile | ZipArchive::LENGTH_TO_END and ZipArchive::LENGTH_UNCHECKED were added.
| ZipArchive::addGlob | ZipArchive::FL_OPEN_FILE_NOW was added.
| ZipArchive::replaceFile | ZipArchive::FL_OPEN_FILE_NOW was added.
| ZipArchive::replaceFile | ZipArchive::LENGTH_TO_END and ZipArchive::LENGTH_UNCHECKED were added.
8.2.9 | DateTimeImmutable::createFromFormat | The (space) specifier now also supports NBSP (U+A0) and NNBSP (U+202F) characters.
8.2.1 | SplFileObject::__toString | Changed from an alias of SplFileObject::fgets to an implementation of SplFileObject::current which returns a CSV string when the SplFileObject::READ_CSV flag is set.
8.2.0 | ArrayIterator::asort | The return type is true now; previously, it was bool.
| ArrayIterator::ksort | The return type is true now; previously, it was bool.
| ArrayIterator::natcasesort | The return type is true now; previously, it was bool.
| ArrayIterator::natsort | The return type is true now; previously, it was bool.
| ArrayIterator::uasort | The return type is true now; previously, it was bool.
| ArrayIterator::uksort | The return type is true now; previously, it was bool.
| ArrayObject::asort | The return type is true now; previously, it was bool.
| ArrayObject::ksort | The return type is true now; previously, it was bool.
| ArrayObject::natcasesort | The return type is true now; previously, it was bool.
| ArrayObject::natsort | The return type is true now; previously, it was bool.
| ArrayObject::uasort | The return type is true now; previously, it was bool.
| ArrayObject::uksort | The return type is true now; previously, it was bool.
| DateInterval::__construct | Only the y to f, invert, and days will be visible, including a new from_string boolean property.
| DateInterval::createFromDateString | Only the from_string and date_string properties will be visible when a DateInterval is created with this method.
| DatePeriod::__construct | The DatePeriod::INCLUDE_END_DATE constant has been added.
| DateTime::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| DateTimeInterface::format | The format characters X and x have been added.
| DateTimeImmutable::createFromFormat | The X and x format specifiers have been added.
| DateTimeImmutable::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| DateTimeImmutable::getLastErrors | Before PHP 8.2.0, this function did not return false when there were no warnings or errors. Instead, it would always return the documented array structure.
| FilesystemIterator::__construct | Prior to PHP 8.2.0, FilesystemIterator::SKIP_DOTS was always set and could not be removed.
| array_walk | The return type is true now; previously, it was bool.
| array_walk_recursive | The return type is true now; previously, it was bool.
| arsort | The return type is true now; previously, it was bool.
| asort | The return type is true now; previously, it was bool.
| curl_getinfo | Introduced CURLINFO_PROXY_ERROR, CURLINFO_REFERER, CURLINFO_RETRY_AFTER.
| curl_multi_setopt | Introduced CURLMOPT_MAX_CONCURRENT_STREAMS.
| date_parse_from_format | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| dba_fetch | dba_fetch's optional skip argument is now at the end in line with PHP userland semantics. The previously overloaded signature is still accepted but discouraged.
| dba_open | flags is added.
| dba_open | handler is now nullable.
| dba_popen | flags is added.
| getimagesize | Now returns the actual image dimensions, bits and channels of AVIF images; previously, the dimensions were reported as 0x0, and bits and channels were not reported at all.
| idate | Adds the N (ISO-8601 day of the week) and o (ISO-8601 year) format characters.
| iterator_count | The type of iterator has been widened from Traversable to Traversablearray.
| iterator_to_array | The type of iterator has been widened from Traversable to Traversablearray.
| krsort | The return type is true now; previously, it was bool.
| krsort | This function now does numeric string comparison under SORT_REGULAR using the standard PHP 8 rules.
| ksort | The return type is true now; previously, it was bool.
| ksort | This function now does numeric string comparison under SORT_REGULAR using the standard PHP 8 rules.
| lcfirst | Case conversion no longer depends on the locale set with setlocale. Only ASCII characters will be converted.
| mb_convert_encoding | mb_convert_encoding will no longer return the following non text encodings: "Base64", "QPrint", "UUencode", "HTML entities", "7 bit" and "8 bit".
| mb_convert_kana | A ValueError is now thrown if the combination of different modes is invalid.
| mb_detect_encoding | mb_detect_encoding will no longer return the following non text encodings: "Base64", "QPrint", "UUencode", "HTML entities", "7 bit" and "8 bit".
| natcasesort | The return type is true now; previously, it was bool.
| natsort | The return type is true now; previously, it was bool.
| openlog | The function now always returns true. Previously it returned false on failure.
| pg_close | The return type is true now; previously, it was bool.
| pg_untrace | The return type is true now; previously, it was bool.
| random_bytes | In case of a CSPRNG failure, this function will now throw a Random\RandomException. Previously a plain Exception was thrown.
| random_int | In case of a CSPRNG failure, this function will now throw a Random\RandomException. Previously a plain Exception was thrown.
| rsort | The return type is true now; previously, it was bool.
| setcookie | The date format of the cookie is now 'D, d M Y H:i:s \G\M\T'; previously it was 'D, d-M-Y H:i:s T'.
| snmp_set_enum_print | The return type is true now; previously, it was bool.
| snmp_set_oid_output_format | The return type is true now; previously, it was bool.
| snmp_set_quick_print | The return type is true now; previously, it was bool.
| snmp_set_valueretrieval | The return type is true now; previously, it was bool.
| sort | The return type is true now; previously, it was bool.
| str_ireplace | Case folding no longer depends on the locale set with setlocale. Only ASCII case folding will be done. Non-ASCII bytes will be compared by their byte value.
| str_split | If string is empty an empty array is now returned. Previously an array containing a single empty string was returned.
| strcasecmp | This function now returns -1 or 1, where it previously returned a negative or positive number.
| strcmp | This function now returns -1 or 1, where it previously returned a negative or positive number.
| stripos | Case folding no longer depends on the locale set with setlocale. Only ASCII case folding will be done. Non-ASCII bytes will be compared by their byte value.
| stristr | Case folding no longer depends on the locale set with setlocale. Only ASCII case folding will be done. Non-ASCII bytes will be compared by their byte value.
| strnatcasecmp | This function now returns -1 or 1, where it previously returned a negative or positive number.
| strnatcmp | This function now returns -1 or 1, where it previously returned a negative or positive number.
| strncasecmp | This function now returns -1 or 1, where it previously returned a negative or positive number.
| strncmp | This function now returns -1 or 1, where it previously returned a negative or positive number.
| strripos | Case folding no longer depends on the locale set with setlocale. Only ASCII case folding will be done. Non-ASCII bytes will be compared by their byte value.
| strtolower | Case conversion no longer depends on the locale set with setlocale. Only ASCII characters will be converted.
| strtoupper | Case conversion no longer depends on the locale set with setlocale. Only ASCII characters will be converted.
| substr_compare | This function now returns -1 or 1, where it previously returned a negative or positive number.
| uasort | The return type is true now; previously, it was bool.
| ucfirst | Case conversion no longer depends on the locale set with setlocale. Only ASCII characters will be converted.
| ucwords | Case conversion no longer depends on the locale set with setlocale. Only ASCII characters will be converted.
| uksort | The return type is true now; previously, it was bool.
| usort | The return type is true now; previously, it was bool.
| utf8_decode | This function has been deprecated.
| utf8_encode | This function has been deprecated.
| var_export | Exported class names are now fully qualified; previously, the leading backslash was ommitted.
| IntlCalendar::clear | The return type is true now; previously, it was bool.
| IntlCalendar::set | The return type is true now; previously, it was bool.
| IntlCalendar::setFirstDayOfWeek | The return type is true now; previously, it was bool.
| IntlCalendar::setLenient | The return type is true now; previously, it was bool.
| IntlCalendar::setRepeatedWallTimeOption | The return type is true now; previously, it was bool.
| IntlCalendar::setSkippedWallTimeOption | The return type is true now; previously, it was bool.
| ReflectionEnum::getBackingType | The return type is now declared as ?ReflectionNamedType. Previously, ?ReflectionType was declared.
8.1.14 | SplFileObject::__toString | Changed from an alias of SplFileObject::fgets to an implementation of SplFileObject::current which returns a CSV string when the SplFileObject::READ_CSV flag is set.
8.1.8 | DateTime::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| DateTimeImmutable::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| date_parse_from_format | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
8.1.0 | DateTime::setTime | The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
| DateTimeImmutable::setTime | The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
| DirectoryIterator::key | When the iterator is uninitialized, an Error is thrown now. Previously, the method returned false.
| DOMDocument::createComment | In case of an error, a DomException is thrown now. Previously, false was returned.
| DOMDocument::createDocumentFragment | In case of an error, a DomException is thrown now. Previously, false was returned.
| DOMDocument::createTextNode | In case of an error, a DomException is thrown now. Previously, false was returned.
| current | Calling this function on objects is deprecated. Either convert the object to an array using get_mangled_object_vars first, or use the methods provided by a class that implements Iterator, such as ArrayIterator, instead.
| date_sunrise | This function has been deprecated in favor of date_sun_info.
| date_sunset | This function has been deprecated in favor of date_sun_info.
| dba_popen | handler is now nullable.
| end | Calling this function on objects is deprecated. Either convert the object to an array using get_mangled_object_vars first, or use the methods provided by a class that implements Iterator, such as ArrayIterator, instead.
| exif_imagetype | Added AVIF support.
| finfo_buffer | The finfo parameter expects an finfo instance now; previously, a resource was expected.
| finfo_close | The finfo parameter expects an finfo instance now; previously, a resource was expected.
| finfo_file | The finfo parameter expects an finfo instance now; previously, a resource was expected.
| finfo_open | Returns an finfo instance now; previously, a resource was returned.
| finfo_set_flags | The finfo parameter expects an finfo instance now; previously, a resource was expected.
| fputcsv | The optional eol parameter has been added.
| ftp_alloc | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_append | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_cdup | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_chdir | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_chmod | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_close | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_connect | Returns an FTP\Connection instance now; previously, a resource was returned.
| ftp_delete | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_exec | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_fget | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_fput | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_get | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_get_option | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_login | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_mdtm | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_mkdir | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_mlsd | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_nb_continue | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_nb_fget | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_nb_fput | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_nb_get | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_nb_put | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_nlist | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_pasv | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_put | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_pwd | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_raw | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_rawlist | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_rename | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_rmdir | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_set_option | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_site | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_size | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| ftp_ssl_connect | Returns an FTP\Connection instance now; previously, a resource was returned.
| ftp_systype | The ftp parameter expects an FTP\Connection instance now; previously, a resource was expected.
| get_html_translation_table | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| gmp_init | Support for explicit octal prefixes 0o and 0o has been added for num strings. Interpretation of such prefixes when base is 0 has also been added.
| hash | The options parameter has been added.
| hash_algos | Support for MurmurHash3 and xxHash algorithms has been added.
| hash_file | The options parameter has been added.
| hash_init | The options parameter has been added.
| html_entity_decode | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| htmlentities | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| htmlspecialchars | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| htmlspecialchars_decode | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| imagechar | The font parameter now accepts both an GdFont instance and an int; previously only int was accepted.
| imagecharup | The font parameter now accepts both an GdFont instance and an int; previously only int was accepted.
| imagefilledpolygon | The parameter num_points has been deprecated.
| imagefontheight | The font parameter now accepts both an GdFont instance and an int; previously only int was accepted.
| imagefontwidth | The font parameter now accepts both an GdFont instance and an int; previously only int was accepted.
| imageloadfont | Returns an GdFont instance now; previously, an int was returned.
| imageopenpolygon | The parameter num_points has been deprecated.
| imagepolygon | The parameter num_points has been deprecated.
| imagestring | The font parameter now accepts both an GdFont instance and an int; previously only int was accepted.
| imagestringup | The font parameter now accepts both an GdFont instance and an int; previously only int was accepted.
| imagetypes | IMG_AVIF added.
| ini_set | value now accepts any scalar type (including null). Previously, only string values were accepted.
| key | Calling this function on objects is deprecated. Either convert the object to an array using get_mangled_object_vars first, or use the methods provided by a class that implements Iterator, such as ArrayIterator, instead.
| ldap_add | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_add_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_add_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_bind | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_bind_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_bind_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_compare | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_connect | Returns an LDAP\Connection instance now; previously, a resource was returned.
| ldap_count_entries | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_count_entries | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_count_references | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_count_references | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_delete | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_delete_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_delete_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_errno | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_error | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_exop | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_exop_passwd | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_exop_refresh | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_exop_whoami | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_first_attribute | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_first_attribute | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_first_entry | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_first_entry | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_first_entry | Returns an LDAP\ResultEntry instance now; previously, a resource was returned.
| ldap_free_result | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_get_attributes | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_get_attributes | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_get_dn | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_get_dn | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_get_entries | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_get_entries | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_get_option | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_get_values | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_get_values | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_get_values_len | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_get_values_len | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_list | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_list | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_mod_add | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_mod_del | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_mod_replace | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_modify_batch | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_mod_add_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_mod_add_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_mod_del_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_mod_del_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_mod_replace_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_mod_replace_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_next_attribute | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_next_attribute | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_next_entry | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_next_entry | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_next_entry | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_parse_exop | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_parse_exop | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_parse_result | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_parse_result | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_read | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_read | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_rename | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_rename_ext | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_rename_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_sasl_bind | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_search | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_search | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_set_option | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_set_rebind_proc | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| ldap_unbind | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected.
| mb_check_encoding | Calling this function with null as value or without argument is deprecated.
| mhash | This function has been deprecated. Use the hash_*() functions instead.
| mhash_count | This function has been deprecated. Use the hash_*() functions instead.
| mhash_get_block_size | This function has been deprecated. Use the hash_*() functions instead.
| mhash_get_hash_name | This function has been deprecated. Use the hash_*() functions instead.
| mhash_keygen_s2k | This function has been deprecated. Use the hash_*() functions instead.
| next | Calling this function on objects is deprecated. Either convert the object to an array using get_mangled_object_vars first, or use the methods provided by a class that implements Iterator, such as ArrayIterator, instead.
| odbc_result_all | This function has been deprecated.
| openssl_cms_encrypt | The default cipher algorithm (cipher_algo) is now AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC). Previously, PKCS7/CMS was used (OPENSSL_CIPHER_RC2_40).
| openssl_decrypt | tag is now nullable.
| openssl_pkcs7_encrypt | The default cipher algorithm (cipher_algo) is now AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC). Previously, PKCS7/CMS was used (OPENSSL_CIPHER_RC2_40).
| pg_affected_rows | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_cancel_query | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_client_encoding | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_close | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_connect | Returns an PgSql\Connection instance now; previously, a resource was returned.
| pg_connect_poll | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_connection_busy | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_connection_reset | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_connection_status | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_consume_input | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_convert | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_copy_from | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_copy_to | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_dbname | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_delete | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_end_copy | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_escape_bytea | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_escape_identifier | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_escape_literal | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_escape_string | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_execute | Returns an PgSql\Result instance now; previously, a resource was returned.
| pg_execute | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_fetch_all | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_fetch_all_columns | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_fetch_array | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_fetch_assoc | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_fetch_object | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_fetch_result | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_fetch_row | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_is_null | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_name | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_num | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_prtlen | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_size | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_table | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_type | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_field_type_oid | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_flush | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_free_result | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_get_notify | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_get_pid | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_get_result | Returns an PgSql\Result instance now; previously, a resource was returned.
| pg_get_result | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_host | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_insert | Returns an PgSql\Result instance now; previously, a resource was returned.
| pg_insert | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_last_error | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_last_notice | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_last_oid | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_lo_close | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_lo_create | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_lo_export | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_lo_import | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_lo_open | Returns an PgSql\Lob instance now; previously, a resource was returned.
| pg_lo_open | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_lo_read | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_lo_read_all | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_lo_seek | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_lo_tell | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_lo_truncate | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_lo_unlink | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_lo_write | The lob parameter expects an PgSql\Lob instance now; previously, a resource was expected.
| pg_meta_data | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_num_fields | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_num_rows | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_options | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_parameter_status | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_pconnect | Returns an PgSql\Connection instance now; previously, a resource was returned.
| pg_ping | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_port | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_prepare | Returns an PgSql\Result instance now; previously, a resource was returned.
| pg_prepare | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_put_line | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_query | Returns an PgSql\Result instance now; previously, a resource was returned.
| pg_query | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_query_params | Returns an PgSql\Result instance now; previously, a resource was returned.
| pg_query_params | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_result_error | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_result_error_field | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_result_seek | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_result_status | The result parameter expects an PgSql\Result instance now; previously, a resource was expected.
| pg_select | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_send_execute | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_send_prepare | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_send_query | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_send_query_params | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_set_client_encoding | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_set_error_verbosity | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_socket | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_trace | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_transaction_status | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_tty | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_untrace | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_update | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| pg_version | The connection parameter expects an PgSql\Connection instance now; previously, a resource was expected.
| prev | Calling this function on objects is deprecated. Either convert the object to an array using get_mangled_object_vars first, or use the methods provided by a class that implements Iterator, such as ArrayIterator, instead.
| reset | Calling this function on objects is deprecated. Either convert the object to an array using get_mangled_object_vars first, or use the methods provided by a class that implements Iterator, such as ArrayIterator, instead.
| snmp3_get | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| snmp3_getnext | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| snmp3_real_walk | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| snmp3_walk | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| stream_select | microseconds is now nullable.
| strptime | This function has been deprecated. Use date_parse_from_format instead (for locale-independent parsing), or IntlDateFormatter::parse (for locale-dependent parsing)
| IntlDateFormatter::create | Parameters dateType and timeType are now optional.
| MultipleIterator::current | A RuntimeException is now thrown if MultipleIterator::current is called on an invalid iterator. Previously, false was returned.
| MultipleIterator::key | A RuntimeException is now thrown if MultipleIterator::key is called on an invalid iterator. Previously, false was returned.
| mysqli_driver::$report_mode | The default value is now MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Previously, it was MYSQLI_REPORT_OFF.
| mysqli_result::fetch_all | Now also available when linking against libmysqlclient.
| mysqli_stmt::execute | The optional params parameter has been added.
| mysqli_stmt::next_result | Now also available when linking against libmysqlclient.
| mysqli::__construct | mysqli::connect now returns true instead of null on success.
| mysqli::$client_info | Calling mysqli_get_client_info with the mysql argument has been deprecated. This function never required a parameter, but incorrectly allowed it as an optional parameter.
| mysqli::$client_info | The object-oriented style mysqli::get_client_info has been deprecated.
| mysqli::init | The object-oriented style mysqli::init method has been deprecated. Replace calls to parent::init with parent::__construct.
| Phar::buildFromDirectory | Phar::buildFromDirectory no longer returns false.
| Phar::buildFromIterator | Phar::buildFromIterator no longer returns false.
| PharData::buildFromDirectory | PharData::buildFromDirectory no longer returns false.
| PharData::buildFromIterator | PharData::buildFromIterator no longer returns false.
| ReflectionFunctionAbstract::isStatic | This method has been pulled up. Previously, it was only defined in ReflectionMethod.
| ReflectionClassConstant::getName | Throws an Error in case the name property has not been initialized. Previously, the method returned false on failure.
| ReflectionExtension::__clone | This method is no longer final.
| ReflectionFunctionAbstract::__clone | This method is no longer final.
| ReflectionParameter::__clone | This method is no longer final.
| ReflectionProperty::__clone | This method is no longer final.
| ReflectionProperty::getValue | Private and protected properties can be accessed by ReflectionProperty::getValue right away. Previously, they needed to be made accessible by calling ReflectionProperty::setAccessible; otherwise a ReflectionException was thrown.
| ReflectionProperty::setValue | Private and protected properties can be accessed by ReflectionProperty::setValue right away. Previously, they needed to be made accessible by calling ReflectionProperty::setAccessible; otherwise a ReflectionException was thrown.
| ReflectionZendExtension::__clone | This method is no longer final.
| SimpleXMLElement::current | An Error is now thrown if SimpleXMLElement::current is called on an invalid iterator. Previously, null was returned.
| SimpleXMLElement::key | An Error is now thrown if SimpleXMLElement::key is called on an invalid iterator. Previously, false was returned.
| SplFileObject::fputcsv | The optional eol parameter has been added.
| SplObjectStorage::current | SplObjectStorage::current now throws an Error exception if the current position is invalid. Previously, false was returned instead.
| SQLite3Result::finalize | This method now throws an Error exception if the object is not correct initialized. Previously, it returned false.
| SQLite3Stmt::close | This method now throws an Error exception if the object is not correct initialized. Previously, it returned false.
8.0.21 | DateTime::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| DateTimeImmutable::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| date_parse_from_format | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
8.0.5 | imageinterlace | imageinterlace returns a bool now; previously it returned an int (non-zero for interlaced images, zero otherwise).
8.0.3 | DOMDocument::getElementsByTagNameNS | namespace is nullable now.
| DOMElement::getElementsByTagNameNS | namespace is nullable now.
| DOMImplementation::createDocument | namespace is now nullable.
| finfo::__construct | magic_database is nullable now.
| bind_textdomain_codeset | codeset is nullable now. Previously, it was not possible to retrieve the currently set encoding.
| bindtextdomain | directory is nullable now. Previously, it was not possible to retrieve the currently set directory.
| finfo_open | magic_database is nullable now.
| imagegd | file is now nullable.
| imagegd2 | file is now nullable.
| SoapClient::__setLocation | location is nullable now.
| SoapVar::__construct | typeName, typeNamespace, nodeName,and nodeNamespace are nullable now.
8.0.0 | CURLFile::__construct | mime_type and posted_filename are nullable now; previously their default was 0.
| DateInterval::__construct | W can be combined with D.
| DateTime::createFromImmutable | The method returns an instance of the currently invoked class now. Previously, it created a new instance of DateTime.
| DateTimeInterface::format | The format character p has been added.
| DateTimeInterface::getTimestamp | These functions no longer return false on failure.
| DateTimeImmutable::createFromMutable | The method returns an instance of the currently invoked class now. Previously, it created a new instance of DateTimeImmutable.
| DateTimeZone::listIdentifiers | Prior to this version, false was returned on failure.
| Directory::close | No parameter is accepted. Previously, a directory handle could be passed as argument.
| Directory::read | No parameter is accepted. Previously, a directory handle could be passed as argument.
| Directory::rewind | No parameter is accepted. Previously, a directory handle could be passed as argument.
| DirectoryIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| DOMDocument::load | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMDocument::loadHTML | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMDocument::loadHTMLFile | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMDocument::loadXML | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMImplementation::createDocument | doctype is now nullable.
| DOMImplementation::createDocument | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMImplementation::createDocumentType | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMImplementation::hasFeature | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| FFI::cdef | lib is nullable now.
| FFI::string | size is nullable now; previously, its default was 0.
| FilesystemIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| abs | num no longer accepts internal objects which support numeric conversion.
| apache_note | note_value is nullable now.
| array_chunk | If length is less than 1, a ValueError will be thrown now; previously, an error of level E_WARNING has been raised instead, and the function returned null.
| array_column | Objects in columns indicated by index_key parameter will no longer be cast to string and will now throw a TypeError instead.
| array_combine | array_combine will now throw a ValueError if the number of elements for each array is not equal; previously this function returned false instead.
| array_diff | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_diff_assoc | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_diff_key | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_fill | array_fill now throws a ValueError if count is out of range; previously E_WARNING was raised, and the function returned false.
| array_filter | callback is nullable now.
| array_filter | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.
| array_intersect | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_intersect_assoc | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_intersect_key | This function can now be called with only one parameter. Formerly, at least two parameters have been required.
| array_key_exists | The key parameter now accepts bool, float, int, null, resource, and string as arguments.
| array_map | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.
| array_rand | array_rand now throws a ValueError if num is out of range; previously an E_WARNING was raised, and the function returned null.
| array_rand | array_rand now throws a ValueError if array is empty; previously an E_WARNING was raised, and the function returned null.
| array_reduce | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.
| array_splice | length is nullable now.
| array_walk | If callback expects the second or third parameter to be passed by reference, this function will now emit an E_WARNING.
| assert | assert will no longer evaluate string arguments, instead they will be treated like any other argument. assert($a == $b) should be used instead of assert('$a == $b'). The assert.quiet_eval php.ini directive and the ASSERT_QUIET_EVAL constant have also been removed, as they would no longer have any effect.
| assert | If description is an instance of Throwable, the object is thrown if the assertion fails, regardless of the value of assert.exception.
| assert | If description is an instance of Throwable, no user callback is called even if it set.
| assert | Declaring a function called assert() inside a namespace is no longer allowed, and issues E_COMPILE_ERROR.
| assert_options | If option is not a valid option, a ValueError is now thrown. Previously false was returned.
| bcadd | scale is now nullable.
| bccomp | scale is now nullable.
| bcdiv | scale is now nullable.
| bcdiv | Dividing by 0 now throws a DivisionByZeroError exception instead of returning null.
| bcmod | scale is now nullable.
| bcmod | Dividing by 0 now throws a DivisionByZeroError exception instead of returning null.
| bcmul | scale is now nullable.
| bcpow | When exponent has a fractional part, it now throws a ValueError instead of truncating.
| bcpowmod | scale is now nullable.
| bcpowmod | Now throws a ValueError instead of returning false if exponent is a negative value.
| bcpowmod | Dividing by 0 now throws a DivisionByZeroError exception instead of returning false.
| bcscale | scale is now nullable.
| bcsqrt | If num is not a well-formed BCMath numeric string, or less than 0, a ValueError is thrown. Previously, E_WARNING was raised instead.
| bcsqrt | scale now needs to be between 0 and 2147483647; previously, negative scales have been silently treated as 0.
| bcsqrt | scale is now nullable.
| bcsub | scale is now nullable.
| bzdecompress | The type of use_less_memory has been changed from int to bool. Previously, the default value was 0.
| bzwrite | length is nullable now.
| call_user_func_array | args keys will now be interpreted as parameter names, instead of being silently ignored.
| ceil | num no longer accepts internal objects which support numeric conversion.
| com_event_sink | sink_interface is nullable now.
| com_get_active_object | codepage is nullable now.
| compact | If a given string references an unset variable, an E_WARNING level error is now issued.
| constant | If the constant is not defined, constant now throws an Error exception; previously an E_WARNING was generated, and null was returned.
| convert_uuencode | Prior to this version, trying to convert an empty string returned false for no particular reason.
| count | count will now throw TypeError on invalid countable types passed to the value parameter.
| count_chars | Prior to this version, the function returned false on failure.
| crypt | The salt is no longer optional.
| curl_close | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_copy_handle | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_copy_handle | On success, this function returns a CurlHandle instance now; previously, a resource was returned.
| curl_errno | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_error | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_escape | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_exec | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_getinfo | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_getinfo | option is nullable now; previously, the default was 0.
| curl_init | On success, this function returns a CurlHandle instance now; previously, a resource was returned.
| curl_init | url is nullable now.
| curl_multi_add_handle | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_add_handle | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_multi_close | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_errno | The function no longer returns false on failure.
| curl_multi_errno | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_exec | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_getcontent | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_multi_info_read | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_init | On success, this function returns a CurlMultiHandle instance now; previously, a resource was returned.
| curl_multi_remove_handle | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_remove_handle | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_multi_select | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_setopt | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_pause | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_reset | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_setopt | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_setopt_array | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_share_close | share_handle expects a CurlShareHandle instance now; previously, a resource was expected.
| curl_share_errno | The function no longer returns false on failure.
| curl_share_errno | share_handle expects a CurlShareHandle instance now; previously, a resource was expected.
| curl_share_init | This function returns a CurlShareHandle instance now; previously, a resource was returned.
| curl_share_setopt | share_handle expects a CurlShareHandle instance now; previously, a resource was expected.
| curl_unescape | handle expects a CurlHandle instance now; previously, a resource was expected.
| curl_version | The optional age parameter has been removed.
| date | timestamp is nullable now.
| date_sunrise | latitude, longitude, zenith and utcOffset are nullable now.
| date_sunset | latitude, longitude, zenith and utcOffset are nullable now.
| define | Passing true to case_insensitive now emits an E_WARNING. Passing false is still allowed.
| deflate_add | context expects a DeflateContext instance now; previously, a resource was expected.
| deflate_init | On success, this function returns a DeflateContext instance now; previously, a resource was returned.
| dir | context is now nullable.
| dom_import_simplexml | This function no longer returns null on failure.
| easter_date | year is nullable now.
| easter_date | A ValueError is now thrown when year is outside the allowed range. Previously, an E_WARNING was raised and the function returned false.
| easter_days | year is nullable now.
| enchant_broker_describe | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_describe | Prior to this version, the function returned false on failure.
| enchant_broker_dict_exists | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_free | This function has been deprecated in favor of unsetting the object.
| enchant_broker_free | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_free_dict | This function has been deprecated in favor of unsetting the object.
| enchant_broker_free_dict | dictionary expects a EnchantDictionary now; previoulsy, a resource was expected.
| enchant_broker_get_dict_path | This function has been deprecated.
| enchant_broker_get_dict_path | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_get_error | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_init | On success, this function returns an EnchantBroker instance now; previously, a resource was returned.
| enchant_broker_list_dicts | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_list_dicts | Prior to this version, the function returned false on failure.
| enchant_broker_request_dict | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_request_dict | On success, this function returns an EnchantDictionary instance now; previoulsy, a resource was retured.
| enchant_broker_request_pwl_dict | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_request_pwl_dict | On success, this function returns an EnchantDictionary instance now; previoulsy, a resource was retured.
| enchant_broker_set_dict_path | This function has been deprecated.
| enchant_broker_set_dict_path | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_set_ordering | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_dict_add | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_add_to_session | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_check | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_describe | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_describe | Prior to this version, the function returned false on failure.
| enchant_dict_get_error | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_is_added | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_quick_check | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_store_replacement | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_suggest | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| error_log | destination and additional_headers are now nullable.
| error_reporting | error_level is nullable now.
| exec | If command is empty or contains null bytes, exec now throws a ValueError. Previously it emitted an E_WARNING and returned false.
| exif_read_data | required_sections is nullable now.
| explode | explode will now throw ValueError when separator parameter is given an empty string (""). Previously, explode returned false instead.
| fgetcsv | length is now nullable.
| file_get_contents | length is nullable now.
| finfo_buffer | context is nullable now.
| finfo_file | context is nullable now.
| floatval | The error level when converting from object was changed from E_NOTICE to E_WARNING.
| floor | num no longer accepts internal objects which support numeric conversion.
| fprintf | This function no longer returns false on failure.
| fprintf | Throw a ValueError if the number of arguments is zero; previously this function emitted a E_WARNING instead.
| fprintf | Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| fprintf | Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| fprintf | Throw a ArgumentCountError when less arguments are given than required; previously this function emitted a E_WARNING instead.
| fsockopen | timeout is nullable now.
| fwrite | length is nullable now.
| get_called_class | Calling this function from outside a class, will now throw an Error. Previously, an E_WARNING was raised and the function returned false.
| get_class | Calling this function from outside a class, without any arguments, will now throw an Error. Previously, an E_WARNING was raised and the function returned false.
| get_class_methods | The object_or_class parameter now only accepts objects or valid class names.
| get_defined_functions | The default value of the exclude_disabled parameter has been changed from false to true.
| get_headers | The associative has been changed from int to bool.
| get_parent_class | The object_or_class parameter now only accepts objects or valid class names.
| get_resources | type is nullable now.
| getdate | timestamp is nullable now.
| getenv | The name is now nullable.
| gmdate | timestamp is nullable now.
| gmmktime | hour is no longer optional. If you need a Unix timestamp, use time.
| gmmktime | minute, second, month, day and year are nullable now.
| gmp_binomial | This function no longer returns false on failure.
| gmp_export | This function no longer returns false on failure.
| gmp_import | This function no longer returns false on failure.
| gmp_random_seed | If seed is invalid, gmp_random_seed now throws a ValueError. Previously it emitted an E_WARNING and returned false.
| gmstrftime | timestamp is nullable now.
| grapheme_substr | The function now consistently clamps out-of-bounds offsets to the string boundary. Previously, false was returned instead of the empty string in some cases.
| gzgets | length is nullable now; previously, the default was 1024.
| gzwrite | length is nullable now; previously, the default was 0.
| hash | hash now throws a ValueError exception if algo is unknown; previously, false was returned instead.
| hash_hkdf | Now throws a ValueError exception on error. Previously, false was returned and an E_WARNING message was emitted.
| hash_hmac | Now throws a ValueError exception if algo is unknown or is a non-cryptographic hash function; previously, false was returned instead.
| hash_hmac_file | Now throws a ValueError exception if algo is unknown or is a non-cryptographic hash function; previously, false was returned instead.
| hash_init | Now throws an ValueError exception if the algo is unknown or is a non-cryptographic hash function, or if key is empty. Previously, false was returned and an E_WARNING message was emitted.
| hash_pbkdf2 | Now throws a ValueError exception on error. Previously, false was returned and an E_WARNING message was emitted.
| hash_update_file | stream_context is now nullable.
| header_remove | name is nullable now.
| html_entity_decode | encoding is nullable now.
| htmlentities | encoding is nullable now.
| http_build_query | arg_separator is now nullable.
| iconv_mime_decode | encoding is nullable now.
| iconv_mime_decode_headers | encoding is nullable now.
| iconv_strlen | encoding is nullable now.
| iconv_strpos | encoding is nullable now.
| iconv_strrpos | encoding is nullable now.
| iconv_substr | length and encoding are nullable now.
| idate | timestamp is nullable now.
| ignore_user_abort | enable is nullable now.
| imageaffine | clip is now nullable.
| imageaffine | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagealphablending | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageantialias | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagearc | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagebmp | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagebmp | The type of compressed is bool now; formerly it was int.
| imagechar | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecharup | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorallocate | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorallocatealpha | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorat | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorclosest | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorclosesthwb | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolordeallocate | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorexact | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorexactalpha | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolormatch | image1 and image2 expect GdImage instances now; previously, resources were expected.
| imagecolorresolve | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorresolvealpha | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorset | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorsforindex | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolorsforindex | imagecolorsforindex now throws a ValueError exception if color is out of range; previously, false was returned instead.
| imagecolorstotal | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolortransparent | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecolortransparent | color is now nullable.
| imageconvolution | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecopy | dst_image and src_image expect GdImage instances now; previously, resources were expected.
| imagecopymerge | dst_image and src_image expect GdImage instances now; previously, resources were expected.
| imagecopymergegray | dst_image and src_image expect GdImage instances now; previously, resources were expected.
| imagecopyresampled | dst_image and src_image expect GdImage instances now; previously, resources were expected.
| imagecopyresized | dst_image and src_image expect GdImage instances now; previously, resources were expected.
| imagecreate | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefrombmp | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromgd | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromgd2 | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromgd2part | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromgif | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromjpeg | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefrompng | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromstring | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromtga | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromwbmp | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromwebp | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromxbm | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromxpm | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatetruecolor | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecrop | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecrop | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecropauto | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagecropauto | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagedashedline | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagedestroy | This function is a NOP now.
| imagedestroy | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageellipse | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefill | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefilledarc | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefilledellipse | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefilledpolygon | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefilledrectangle | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefilltoborder | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefilter | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageflip | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagefttext | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegammacorrect | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegd | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegd2 | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegetclip | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegetinterpolation | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegif | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagegrabscreen | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagegrabwindow | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagegrabwindow | client_area expects a bool now; previously it expected an int.
| imageinterlace | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageinterlace | enable expects a bool now; previously it expected an int.
| imageistruecolor | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagejpeg | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagelayereffect | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageline | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageopenpolygon | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagepalettecopy | dst and src expect GdImage instances now; previously, resources were expected.
| imagepalettetotruecolor | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagepng | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagepolygon | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagerectangle | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imageresolution | resolution_x and resolution_y are now nullable.
| imagerotate | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagerotate | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagerotate | The unused ignore_transparent expects a bool now; previously it expected an int.
| imagesavealpha | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagescale | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagescale | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesetbrush | image and brush expect GdImage instances now; previously, resources were expected.
| imagesetclip | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesetinterpolation | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesetpixel | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesetthickness | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesettile | image and tile expect GdImage instances now; previously, resources were expected.
| imagestring | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagestringup | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesx | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagesy | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagetruecolortopalette | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagettfbbox | The options has been added.
| imagettftext | The options has been added.
| imagewbmp | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagewbmp | foreground_color is nullable now.
| imagewebp | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagexbm | image expects a GdImage instance now; previously, a valid gd resource was expected.
| imagexbm | foreground_color is now nullable.
| imagexbm | The fourth parameter, which was unused, has been removed.
| implode | Passing the separator after the array is no longer supported.
| inflate_add | context expects an InflateContext instance now; previously, a resource was expected.
| inflate_get_read_len | context expects an InflateContext instance now; previously, a resource was expected.
| inflate_get_status | context expects an InflateContext instance now; previously, a resource was expected.
| inflate_init | On success, this function returns an InflateContext instance now; previously, a resource was returned.
| intval | The error level when converting from object was changed from E_NOTICE to E_WARNING.
| is_numeric | Numeric strings ending with whitespace ("42 ") will now return true. Previously, false was returned instead.
| jdtounix | This function no longer returns false on failure, but raises a ValueError instead.
| ldap_add | controls is nullable now; previously, it defaulted to [].
| ldap_add_ext | controls is nullable now; previously, it defaulted to [].
| ldap_bind_ext | controls is nullable now; previously, it defaulted to [].
| ldap_compare | controls is nullable now; previously, it defaulted to [].
| ldap_control_paged_result | This function has been removed.
| ldap_control_paged_result_response | This function has been removed.
| ldap_delete | controls is nullable now; previously, it defaulted to [].
| ldap_delete_ext | controls is nullable now; previously, it defaulted to [].
| ldap_exop_passwd | controls is nullable now; previously, it defaulted to [].
| ldap_first_attribute | The unused third parameter ber_identifier is no longer accepted.
| ldap_list | controls is nullable now; previously, it defaulted to [].
| ldap_mod_add | controls is nullable now; previously, it defaulted to [].
| ldap_mod_del | controls is nullable now; previously, it defaulted to [].
| ldap_mod_replace | controls is nullable now; previously, it defaulted to [].
| ldap_modify_batch | controls is nullable now; previously, it defaulted to [].
| ldap_mod_add_ext | controls is nullable now; previously, it defaulted to [].
| ldap_mod_del_ext | controls is nullable now; previously, it defaulted to [].
| ldap_mod_replace_ext | controls is nullable now; previously, it defaulted to [].
| ldap_next_attribute | The unused third parameter ber_identifier is no longer accepted.
| ldap_read | controls is nullable now; previously, it defaulted to [].
| ldap_rename | controls is nullable now; previously, it defaulted to [].
| ldap_rename_ext | controls is nullable now; previously, it defaulted to [].
| ldap_sasl_bind | dn, password, mech, realm, authc_id, authz_id and props are nullable now.
| ldap_search | controls is nullable now; previously, it defaulted to [].
| ldap_set_rebind_proc | callback is nullable now.
| ldap_sort | This function has been removed.
| levenshtein | Prior to this version, levenshtein had to be called with either two or five arguments.
| levenshtein | Prior to this version, levenshtein would return -1 if one of the argument strings is longer than 255 characters.
| libxml_disable_entity_loader | This function has been deprecated.
| libxml_use_internal_errors | use_errors is nullable now. Previously, its default was false.
| localtime | timestamp is nullable now.
| max | max throws a ValueError on failure now; previously, false was returned and an E_WARNING error was emitted.
| max | As string to number comparisons were changed, max no longer returns a different value based on the argument order in those cases.
| mb_check_encoding | value and encoding are nullable now.
| mb_chr | encoding is nullable now.
| mb_convert_encoding | mb_convert_encoding will now throw a ValueError when to_encoding is passed an invalid encoding.
| mb_convert_encoding | mb_convert_encoding will now throw a ValueError when from_encoding is passed an invalid encoding.
| mb_convert_encoding | from_encoding is nullable now.
| mb_convert_kana | encoding is nullable now.
| mb_decode_numericentity | encoding is nullable now.
| mb_detect_order | encoding is nullable now.
| mb_encode_mimeheader | charset and transfer_encoding are nullable now.
| mb_encode_numericentity | encoding is nullable now.
| mb_encoding_aliases | If the encoding is unknown, a ValueError is now thrown; previously an E_WARNING was emitted, and the function returned false.
| mb_ereg | This function returns true on success now. Previously, it returned the byte length of the matched string if a match for pattern was found in string and matches was passed. If the optional parameter matches was not passed or the length of the matched string was 0, this function returned 1.
| mb_ereg_match | options is nullable now.
| mb_ereg_replace | options is nullable now.
| mb_ereg_replace_callback | options is nullable now.
| mb_ereg_search | pattern and options are nullable now.
| mb_ereg_search_init | pattern and options are nullable now.
| mb_ereg_search_pos | pattern and options are nullable now.
| mb_ereg_search_regs | pattern and options are nullable now.
| mb_eregi | This function returns true on success now. Previously, it returned the byte length of the matched string if a match for pattern was found in string and matches was passed. If the optional parameter matches was not passed or the length of the matched string was 0, this function returned 1.
| mb_eregi_replace | options is nullable now.
| mb_get_info | The types "func_overload" and "func_overload_list" are no longer supported.
| mb_http_input | type is nullable now.
| mb_http_output | encoding is nullable now.
| mb_internal_encoding | encoding is nullable now.
| mb_internal_encoding | Now throws a ValueError if encoding is an invalid encoding. Previously a E_WARNING was emitted instead.
| mb_language | language is nullable now.
| mb_ord | encoding is nullable now.
| mb_parse_str | The second parameter was no longer optional.
| mb_regex_encoding | encoding is nullable now.
| mb_regex_set_options | If the parameter options is given and not null, the previous options are returned. Formerly, the current options have been returned.
| mb_regex_set_options | options is nullable now.
| mb_regex_set_options | The "e" option now throws a ValueError.
| mb_scrub | encoding is nullable now.
| mb_send_mail | additional_params is nullable now.
| mb_str_split | encoding is nullable now.
| mb_str_split | This function no longer returns false on failure.
| mb_strcut | encoding is nullable now.
| mb_strimwidth | encoding is nullable now.
| mb_stripos | needle now accepts an empty string.
| mb_stripos | encoding is nullable now.
| mb_stristr | needle now accepts an empty string.
| mb_stristr | encoding is nullable now.
| mb_strlen | encoding is nullable now.
| mb_strpos | needle now accepts an empty string.
| mb_strpos | encoding is nullable now.
| mb_strrchr | needle now accepts an empty string.
| mb_strrchr | encoding is nullable now.
| mb_strrichr | needle now accepts an empty string.
| mb_strrichr | encoding is nullable now.
| mb_strripos | needle now accepts an empty string.
| mb_strripos | encoding is nullable now.
| mb_strrpos | needle now accepts an empty string.
| mb_strrpos | Passing the encoding as the third argument instead of an offset has been removed.
| mb_strrpos | encoding is nullable now.
| mb_strstr | needle now accepts an empty string.
| mb_strstr | encoding is nullable now.
| mb_strwidth | encoding is nullable now.
| mb_substitute_character | Passing an empty string to substitute_character is no longer supported; "none" should be passed instead.
| mb_substitute_character | encoding is nullable now.
| mb_substr | encoding is nullable now.
| mb_substr_count | encoding is nullable now.
| metaphone | The function returned false on failure.
| mhash | key is now nullable.
| min | min throws a ValueError on failure now; previously, false was returned and an E_WARNING error was emitted.
| min | As string to number comparisons were changed, min no longer returns a different value based on the argument order in those cases.
| mktime | hour is no longer optional. If you need a Unix timestamp, use time.
| mktime | minute, second, month, day and year are nullable now.
| msg_get_queue | On success, this function returns a SysvMessageQueue instance now; previously, a resource was returned.
| msg_receive | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_remove_queue | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_send | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_set_queue | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_stat_queue | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| number_format | Prior to this version, number_format accepted one, two, or four parameters (but not three).
| ob_implicit_flush | The enable expects a bool value now; previously, an int was expected.
| odbc_columns | schema, table and column are now nullable.
| odbc_error | odbc is now nullable.
| odbc_errormsg | odbc is now nullable.
| odbc_exec | flags was removed.
| odbc_execute | The unused flags parameter was removed.
| odbc_fetch_row | row is now nullable.
| odbc_procedurecolumns | Prior to this version, the function could only be called with either one or five arguments.
| odbc_procedures | Prior to this version, the function could only be called with either one or four arguments.
| odbc_tables | schema, table and types are now nullable.
| opendir | context is now nullable.
| openssl_csr_export | csr accepts an OpenSSLCertificateSigningRequest instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_csr_export_to_file | csr accepts an OpenSSLCertificateSigningRequest instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_csr_get_public_key | On success, this function returns an OpenSSLAsymmetricKey instance now; previously, a resource of type OpenSSL key was returned.
| openssl_csr_get_public_key | csr accepts an OpenSSLCertificateSigningRequest instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_csr_get_subject | csr accepts an OpenSSLCertificateSigningRequest instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_csr_new | On success, this function returns an OpenSSLCertificateSigningRequest instance now; previously, a resource of type OpenSSL X.509 CSR was returned.
| openssl_csr_new | private_key accepts an OpenSSLAsymmetricKey instance now; previously, a resource of type OpenSSL key was accepted.
| openssl_csr_sign | On success, this function returns an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was returned.
| openssl_csr_sign | csr accepts an OpenSSLCertificateSigningRequest instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_csr_sign | ca_certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_csr_sign | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_dh_compute_key | private_key accepts an OpenSSLAsymmetricKey now; previously, a resource of type OpenSSL key was accepted.
| openssl_free_key | This function is now deprecated as it doesn't have an effect anymore.
| openssl_free_key | key accepts an OpenSSLAsymmetricKey now; previously, a resource of type OpenSSL key was accepted.
| openssl_open | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 CSR was accepted.
| openssl_open | cipher_algo is no longer an optional parameter.
| openssl_pkcs7_decrypt | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 CSR was accepted.
| openssl_pkcs7_encrypt | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_pkcs7_sign | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_pkcs7_sign | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 CSR was accepted.
| openssl_pkcs7_verify | signers_certificates_filename, untrusted_certificates_filename, content and output_filename are nullable now.
| openssl_pkcs12_export | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_pkcs12_export | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_pkcs12_export_to_file | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 CSR was accepted.
| openssl_pkcs12_export_to_file | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_pkey_export | key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_pkey_export_to_file | key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_pkey_free | This function is now deprecated as it doesn't have an effect anymore.
| openssl_pkey_free | key accepts an OpenSSLAsymmetricKey now; previously, a resource of type OpenSSL key was accepted.
| openssl_pkey_get_details | key accepts an OpenSSLAsymmetricKey now; previously, a resource of type OpenSSL key was accepted.
| openssl_pkey_get_private | On success, this function returns an OpenSSLAsymmetricKey instance now; previously, a resource of type OpenSSL key was returned.
| openssl_pkey_get_private | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_pkey_get_private | passphrase is nullable now.
| openssl_pkey_get_public | On success, this function returns an OpenSSLAsymmetricKey instance now; previously, a resource of type OpenSSL key was returned.
| openssl_pkey_get_public | public_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_pkey_new | On success, this function returns an OpenSSLAsymmetricKey instance now; previously, a resource of type OpenSSL key was returned.
| openssl_private_decrypt | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_private_encrypt | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_public_decrypt | public_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_public_encrypt | public_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_random_pseudo_bytes | strong_result is nullable now.
| openssl_seal | public_key accepts an array of OpenSSLAsymmetricKey instances now; previously, an array of resources of type OpenSSL key was accepted.
| openssl_seal | cipher_algo is no longer an optional parameter.
| openssl_seal | iv is nullable now.
| openssl_sign | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_spki_new | private_key accepts an OpenSSLAsymmetricKey instance now; previously, a resource of type OpenSSL key was accepted.
| openssl_verify | public_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_x509_check_private_key | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_check_private_key | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_x509_checkpurpose | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_checkpurpose | untrusted_certificates_file is nullable now.
| openssl_x509_export | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_export_to_file | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_fingerprint | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_free | This function is now deprecated as it doesn't have an effect anymore.
| openssl_x509_free | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_parse | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_read | On success, this function returns an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was returned.
| openssl_x509_read | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_verify | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_verify | public_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| pack | This function no longer returns false on failure.
| parse_str | result is no longer optional.
| parse_url | parse_url will now distinguish absent and empty queries and fragments.
| passthru | If command is empty or contains null bytes, passthru now throws a ValueError. Previously it emitted an E_WARNING and returned false.
| password_hash | password_hash no longer returns false on failure, instead a ValueError will be thrown if the password hashing algorithm is not valid, or an Error if the password hashing failed for an unknown error.
| password_hash | The algo parameter is nullable now.
| pcntl_async_signals | enable is nullable now.
| pcntl_getpriority | process_id is nullable now.
| pcntl_setpriority | process_id is nullable now.
| pfsockopen | timeout is nullable now.
| pg_client_encoding | connection is now nullable.
| pg_close | connection is now nullable.
| pg_dbname | connection is now nullable.
| pg_end_copy | connection is now nullable.
| pg_fetch_all | pg_fetch_all will now return an empty array instead of false for result sets with zero rows.
| pg_host | connection is now nullable.
| pg_last_error | connection is now nullable.
| pg_lo_write | length is now nullable.
| pg_options | connection is now nullable.
| pg_ping | connection is now nullable.
| pg_port | connection is now nullable.
| pg_trace | connection is now nullable.
| pg_tty | connection is now nullable.
| pg_untrace | connection is now nullable.
| pg_version | connection is now nullable.
| phpversion | extension is nullable now.
| printf | This function no longer returns false on failure.
| printf | Throw a ValueError if the number of arguments is zero; previously this function emitted a E_WARNING instead.
| printf | Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| printf | Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| printf | Throw a ArgumentCountError when less arguments are given than required; previously this function emitted a E_WARNING instead.
| readdir | dir_handle is now nullable.
| readline_info | var_name and value are nullable now.
| readline_read_history | filename is nullable now.
| readline_write_history | filename is nullable now.
| rewinddir | dir_handle is now nullable.
| round | num no longer accepts internal objects which support numeric conversion.
| sapi_windows_vt100_support | enable is now nullable.
| scandir | context is now nullable.
| sem_acquire | semaphore expects a SysvSemaphore instance now; previously, a resource was expected.
| sem_get | On success, this function returns a SysvSemaphore instance now; previously, a resource was returned.
| sem_get | The type of auto_release has been changed from int to bool.
| sem_release | semaphore expects a SysvSemaphore instance now; previously, a resource was expected.
| sem_remove | semaphore expects a SysvSemaphore instance now; previously, a resource was expected.
| session_cache_expire | value is nullable now.
| session_cache_limiter | value is nullable now.
| session_id | id is nullable now.
| session_module_name | module is nullable now.
| session_name | name is nullable now.
| session_save_path | path is nullable now.
| session_set_cookie_params | path, domain, secure and httponly are nullable now.
| set_error_handler | errcontext was removed, and will no longer be passed to user callbacks.
| shm_attach | On success, this function returns an SysvSharedMemory instance now; previously, a resource was returned.
| shm_attach | size is nullable now.
| shm_detach | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_get_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_has_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_put_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_remove | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_remove_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shmop_close | This function has been deprecated, as this function has no effect anymore.
| shmop_close | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_delete | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_open | On success, this function returns an Shmop instance now; previously, a resource was returned.
| shmop_open | If mode is invalid, or size is less than or equal to zero, a ValueError is thrown; previously E_WARNING was emitted instead, and the function returned false.
| shmop_read | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_read | If offset or size are out of range, a ValueError is thrown; previously E_WARNING was emitted, and false was returned,
| shmop_size | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_write | Prior to PHP 8.0.0, false was returned on failure.
| shmop_write | shmop expects a Shmop instance now; previously, a resource was expected.
| sleep | The function throws a ValueError on negative seconds; previously, an E_WARNING was raised instead, and the function returned false.
| socket_accept | On success, this function returns a Socket instance now; previously, a resource was returned.
| socket_addrinfo_bind | On success, this function returns a Socket instance now; previously, a resource was returned.
| socket_addrinfo_bind | address is an AddressInfo instance now; previously, it was a resource.
| socket_addrinfo_connect | On success, this function returns a Socket instance now; previously, a resource was returned.
| socket_addrinfo_connect | address is an AddressInfo instance now; previously, it was a resource.
| socket_addrinfo_explain | address is an AddressInfo instance now; previously, it was a resource.
| socket_addrinfo_lookup | On success, this function returns a array of AddressInfo instances now; previously, an array of resources was returned.
| socket_addrinfo_lookup | service is nullable now.
| socket_bind | socket is a Socket instance now; previously, it was a resource.
| socket_clear_error | socket is a Socket instance now; previously, it was a resource.
| socket_clear_error | socket is nullable now.
| socket_close | socket is a Socket instance now; previously, it was a resource.
| socket_connect | socket is a Socket instance now; previously, it was a resource.
| socket_connect | port is nullable now.
| socket_create | On success, this function returns a Socket instance now; previously, a resource was returned.
| socket_create_listen | On success, this function returns a Socket instance now; previously, a resource was returned.
| socket_create_pair | pair is a reference to an array of Socket instances now; previously, it was a reference to an array of resources.
| socket_export_stream | socket is a Socket instance now; previously, it was a resource.
| socket_get_option | socket is a Socket instance now; previously, it was a resource.
| socket_getpeername | socket is a Socket instance now; previously, it was a resource.
| socket_getsockname | socket is a Socket instance now; previously, it was a resource.
| socket_import_stream | On success, this function returns a Socket instance now; previously, a resource was returned.
| socket_last_error | socket is a Socket instance now; previously, it was a resource.
| socket_last_error | socket is nullable now.
| socket_listen | socket is a Socket instance now; previously, it was a resource.
| socket_read | socket is a Socket instance now; previously, it was a resource.
| socket_recv | socket is a Socket instance now; previously, it was a resource.
| socket_recvfrom | socket is a Socket instance now; previously, it was a resource.
| socket_recvmsg | socket is a Socket instance now; previously, it was a resource.
| socket_send | socket is a Socket instance now; previously, it was a resource.
| socket_sendmsg | socket is a Socket instance now; previously, it was a resource.
| socket_sendto | socket is a Socket instance now; previously, it was a resource.
| socket_sendto | port is nullable now.
| socket_set_block | socket is a Socket instance now; previously, it was a resource.
| socket_set_nonblock | socket is a Socket instance now; previously, it was a resource.
| socket_set_option | socket is a Socket instance now; previously, it was a resource.
| socket_shutdown | socket is a Socket instance now; previously, it was a resource.
| socket_write | socket is a Socket instance now; previously, it was a resource.
| socket_write | length is nullable now.
| socket_wsaprotocol_info_export | socket is a Socket instance now; previously, it was a resource.
| socket_wsaprotocol_info_import | On success, this function returns a Socket instance now; previously, a resource was returned.
| soundex | Prior to this version, calling the function with an empty string returned false for no particular reason.
| spl_autoload | file_extensions is now nullable.
| spl_autoload_extensions | file_extensions is now nullable.
| spl_autoload_functions | Return value was updated to always be an array; previously this function returned false if the autoload queue wasn't activated.
| spl_autoload_register | callback is now nullable.
| sprintf | This function no longer returns false on failure.
| sprintf | Throw a ValueError if the number of arguments is zero; previously this function emitted a E_WARNING instead.
| sprintf | Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| sprintf | Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| sprintf | Throw a ArgumentCountError when less arguments are given than required; previously this function emitted a E_WARNING instead.
| str_split | If length is less than 1, a ValueError will be thrown now; previously, an error of level E_WARNING has been raised instead, and the function returned false.
| str_word_count | characters is nullable now.
| strcspn | length is nullable now.
| stream_context_create | options and params are now nullable.
| stream_context_get_default | options is now nullable.
| stream_copy_to_stream | length is now nullable.
| stream_get_contents | length is now nullable.
| stream_set_chunk_size | A ValueError is now thrown if size is less than 1 or greater than PHP_INT_MAX. Previously, an E_WARNING level error was emitted and false was returned.
| stream_socket_accept | timeout is now nullable.
| stream_socket_client | timeout and context are now nullable.
| stream_socket_enable_crypto | session_stream is now nullable.
| stream_socket_server | context is nullable now.
| strftime | timestamp is nullable now.
| strip_tags | allowed_tags is nullable now.
| stripos | needle now accepts an empty string.
| stripos | Passing an int as needle is no longer supported.
| stristr | needle now accepts an empty string.
| stristr | Passing an int as needle is no longer supported.
| strpos | needle now accepts an empty string.
| strpos | Passing an int as needle is no longer supported.
| strrchr | needle now accepts an empty string.
| strrchr | Passing an int as needle is no longer supported.
| strripos | needle now accepts an empty string.
| strripos | Passing an int as needle is no longer supported.
| strrpos | needle now accepts an empty string.
| strrpos | Passing an int as needle is no longer supported.
| strspn | length is nullable now.
| strstr | needle now accepts an empty string.
| strstr | Passing an int as needle is no longer supported.
| strtotime | baseTimestamp is nullable now.
| substr | length is nullable now. When length is explicitly set to null, the function returns a substring finishing at the end of the string, when it previously returned an empty string.
| substr | The function returns an empty string where it previously returned false.
| substr_compare | length is nullable now.
| substr_count | length is nullable now.
| substr_replace | length is nullable now.
| touch | mtime and atime are now nullable.
| trigger_error | The function now throws a ValueError if an invalid error_level is specified. Previously, it returned false.
| uasort | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.
| uksort | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.
| umask | mask is nullable now.
| unixtojd | timestamp is nullable now.
| usort | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.
| vfprintf | This function no longer returns false on failure.
| vfprintf | Throw a ValueError if the number of arguments is zero; previously this function emitted a E_WARNING instead.
| vfprintf | Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| vfprintf | Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| vfprintf | Throw a ValueError when less arguments are given than required; previously this function emitted a E_WARNING instead.
| vprintf | This function no longer returns false on failure.
| vprintf | Throw a ValueError if the number of arguments is zero; previously this function emitted a E_WARNING instead.
| vprintf | Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| vprintf | Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| vprintf | Throw a ValueError when less arguments are given than required; previously this function emitted a E_WARNING instead.
| vsprintf | This function no longer returns false on failure.
| vsprintf | Throw a ValueError if the number of arguments is zero; previously this function emitted a E_WARNING instead.
| vsprintf | Throw a ValueError if [width] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| vsprintf | Throw a ValueError if [precision] is less than zero or bigger than PHP_INT_MAX; previously this function emitted a E_WARNING instead.
| vsprintf | Throw a ValueError when less arguments are given than required; previously this function emitted a E_WARNING instead.
| wordwrap | If break is empty string, a ValueError is thrown; previously in this case it emitted an E_WARNING and returned false.
| xml_get_current_byte_index | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_get_current_column_number | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_get_current_line_number | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_get_error_code | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_parse | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_parse_into_struct | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_parser_create | This function returns an XMLParser instance now; previously, a resource was returned, or false on failure.
| xml_parser_create | encoding is nullable now.
| xml_parser_create_ns | This function returns an XMLParser instance now; previously, a resource was returned, or false on failure.
| xml_parser_create_ns | encoding is nullable now.
| xml_parser_free | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_parser_get_option | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_parser_get_option | A ValueError is now thrown if option is invalid.
| xml_parser_set_option | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_parser_set_option | A ValueError is now thrown if option is invalid.
| xml_set_character_data_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_default_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_element_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_end_namespace_decl_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_external_entity_ref_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_notation_decl_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_object | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_processing_instruction_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_start_namespace_decl_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| xml_set_unparsed_entity_decl_handler | parser expects an XMLParser instance now; previously, a valid xml resource was expected.
| 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.
| GlobIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| IntlCalendar::setMinimalDaysInFirstWeek | A ValueError is now thrown on invalid input. Previously, false was returned.
| IntlTimeZone::getIDForWindowsID | region is now nullable.
| LimitIterator::__construct | Now throws a ValueError if offset is less than 0; previously it threw a RuntimeException.
| LimitIterator::__construct | Now throws a ValueError if limit is less than -1; previously it threw a RuntimeException.
| Locale::getDisplayLanguage | displayLocale is nullable now.
| Locale::getDisplayName | displayLocale is nullable now.
| Locale::getDisplayRegion | displayLocale is nullable now.
| Locale::getDisplayScript | displayLocale is nullable now.
| Locale::getDisplayVariant | displayLocale is nullable now.
| mysqli_result::fetch_object | constructor_args now accepts [] for constructors with 0 parameters; previously an exception was thrown.
| mysqli_result::field_seek | This function now always returns true. Previously it returned false on failure.
| mysqli_stmt::close | This function now always returns true. Previously it returned false on failure.
| mysqli_stmt::__construct | query is now nullable.
| mysqli::begin_transaction | name is now nullable.
| mysqli::close | This function now always returns true. Previously it returned false on failure.
| mysqli::commit | name is now nullable.
| mysqli::debug | This function now always returns true. Previously it returned false on failure.
| mysqli::rollback | name is now nullable.
| NumberFormatter::create | pattern is nullable now.
| PDOStatement::fetchAll | This method always returns an array now, while previously false may have been returned on failure.
| Phar::addFile | localName is now nullable.
| Phar::buildFromIterator | baseDirectory is now nullable.
| Phar::compress | extension is now nullable.
| Phar::convertToData | format, compression, and extension are now nullable.
| Phar::convertToExecutable | format, compression, and extension are now nullable.
| Phar::createDefaultStub | index and webIndex are now nullable.
| Phar::decompress | extension is now nullable.
| Phar::getMetadata | The parameter unserializeOptions has been added.
| Phar::setDefaultStub | webIndex is nullable now.
| Phar::setSignatureAlgorithm | privateKey is now nullable.
| Phar::webPhar | fileNotFoundScript and rewrite are nullable now.
| PharData::addFile | localName is now nullable.
| PharData::buildFromIterator | baseDirectory is now nullable.
| PharData::compress | extension is now nullable.
| PharData::convertToData | format, compression, and extension are now nullable.
| PharData::convertToExecutable | format, compression, and localName are now nullable.
| PharData::decompress | extension is now nullable.
| PharData::setDefaultStub | webIndex is nullable now.
| PharData::setSignatureAlgorithm | privateKey is now nullable.
| PharFileInfo::getMetadata | The parameter unserializeOptions has been added.
| PharFileInfo::isCompressed | compression is now nullable.
| RecursiveDirectoryIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| RecursiveIteratorIterator::getSubIterator | level is now nullable.
| ReflectionClass::getConstants | filter has been added.
| ReflectionClass::getReflectionConstants | filter has been added.
| ReflectionFunction::invokeArgs | args keys will now be interpreted as parameter names, instead of being silently ignored.
| ReflectionFunction::isDisabled | This function has been deprecated, as ReflectionFunction can no longer be constructed for disabled functions.
| ReflectionMethod::getClosure | object is now nullable.
| ReflectionMethod::invokeArgs | args keys will now be interpreted as parameter names, instead of being silently ignored.
| ReflectionParameter::getClass | This function has been deprecated in favor of ReflectionParameter::getType instead.
| 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.
| ReflectionParameter::isArray | This function has been deprecated in favor of ReflectionParameter::getType instead.
| ReflectionParameter::isCallable | This function has been deprecated in favor of ReflectionParameter::getType instead.
| ReflectionProperty::getValue | object is nullable now.
| ReflectionProperty::isInitialized | object is nullable now.
| ReflectionType::__toString | ReflectionType::__toString has been undeprecated.
| SimpleXMLElement::asXML | filename is nullable now.
| SoapClient::__doRequest | The type of oneWay is bool now; formerly it was int.
| SoapClient::__setCookie | value is now nullable.
| SoapServer::handle | request is now nullable.
| SplFileInfo::getFileInfo | class is now nullable.
| SplFileInfo::getPathInfo | class is now nullable.
| SplFileInfo::openFile | context is now nullable.
| SplFixedArray::__construct | Now throws a ValueError if size is a negative; previously it threw a InvalidArgumentException.
| tidy::__construct | filename, config, encoding and useIncludePath are nullable now.
| tidy::parseFile | config and encoding are nullable now.
| tidy::parseString | config and encoding are nullable now.
| tidy::repairFile | tidy::repairFile is a static method now.
| tidy::repairFile | config and encoding are nullable now.
| tidy::repairString | tidy::repairString is a static method now.
| tidy::repairString | config and encoding are nullable now.
| tidy::repairString | This function no longer accepts the useIncludePath parameter.
| XMLReader::getAttribute | This function can no longer return false.
| XMLReader::getAttributeNs | This function can no longer return false.
| XMLReader::lookupNamespace | This function can no longer return false.
| XMLReader::next | name is nullable now.
| XMLReader::open | XMLReader::open is now declared as static method, but can still be called on an XMLReader instance.
| XMLReader::XML | XMLReader::XML is now declared as static method, but can still be called on an XMLReader instance.
| XMLWriter::endAttribute | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endCdata | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endComment | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endDocument | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endDtd | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endDtdAttlist | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endDtdElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endDtdEntity | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::endPi | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::flush | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::flush | This function can no longer return false.
| XMLWriter::fullEndElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::openMemory | This function returns now an XMLWriter instance on success. Previouly, a resource has been returned in this case.
| XMLWriter::openUri | This function returns now an XMLWriter instance on success. Previouly, a resource has been returned in this case.
| XMLWriter::outputMemory | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::setIndent | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::setIndentString | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startAttribute | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startAttributeNs | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startAttributeNs | prefix is nullable now.
| XMLWriter::startCdata | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startComment | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startDocument | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startDtd | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startDtdAttlist | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startDtdElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startDtdEntity | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startElementNs | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::startPi | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::text | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeAttribute | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeAttributeNs | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeCdata | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeComment | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeDtd | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeDtdAttlist | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeDtdElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeDtdEntity | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeDtdEntity | publicId, systemId and notationData are nullable now.
| XMLWriter::writeElement | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeElementNs | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writePi | writer expects an XMLWriter instance now; previously, a resource was expected.
| XMLWriter::writeRaw | writer expects an XMLWriter instance now; previously, a resource was expected.
| ZipArchive::addEmptyDir | flags was added.
| ZipArchive::addFile | flags was added.
| ZipArchive::addFromString | flags was added.
| ZipArchive::addGlob | "flags" in options was added.
| ZipArchive::addGlob | "comp_method", "comp_flags", "enc_method" and "enc_password" in options were added.
| ZipArchive::getStatusString | This method can be called on closed archive.
| ZipArchive::getStatusString | This method no longer returns false on failure.
| ZipArchive::setEncryptionIndex | password is now nullable.
| ZipArchive::setEncryptionName | password is now nullable.
7.4.12 | jdtounix | The upper limit of julian_day 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.4.4 | proc_open | Added the create_new_console option to the options parameter.
7.4.3 | curl_setopt | Introduced CURLOPT_HTTP09_ALLOWED.
7.4.2 | dba_open | The lmdb driver now supports an additional map_size parameter.
| dba_popen | The lmdb driver now supports an additional map_size parameter.
7.4.0 | DatePeriod::__construct | recurrences must be greater than 0 now.
| 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 codepoints, and casts these to 0.
| curl_version | The optional age parameter has been deprecated; if a value is passed, it is ignored.
| current | Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.
| end | Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.
| fgetcsv | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| fputcsv | The escape 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.
| gzread | This functions returns false on failure now; previously 0 was returned.
| gzwrite | This functions returns false on failure now; previously 0 was returned.
| 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 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 separator after the array (i.e. using the legacy signature) has been deprecated.
| key | Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.
| 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.
| next | Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.
| octdec | Passing invalid characters will now generate a deprecation notice. The result will still be computed as if the invalid characters did not exist.
| openssl_random_pseudo_bytes | The function no longer returns false on failure, but throws an Exception instead.
| password_hash | The algo parameter expects a string now, but still accepts ints for backward compatibility.
| password_hash | The sodium extension provides an alternative implementation for Argon2 passwords.
| 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.
| prev | Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.
| proc_open | proc_open now also accepts an array for the command.
| proc_open | Added the create_process_group option to the options parameter.
| reset | Instances of SPL classes are now treated like empty objects that have no properties instead of calling the Iterator method with the same name as this function.
| 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 allowed_tags now alternatively accepts an array.
| unserialize | Added the max_depth element of options to set the maximum depth of structures permitted during unserialization.
| Locale::lookup | defaultLocale is nullable now.
| mysqli::__construct | All parameters are now nullable.
| mysqli::real_connect | All parameters are now nullable.
| 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 | param now also supports the @param notation.
| SQLite3Stmt::bindValue | param now also supports the @param notation.
7.3.24 | jdtounix | The upper limit of julian_day 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 | curl_setopt | Introduced CURLOPT_HTTP09_ALLOWED.
7.3.14 | dba_open | The lmdb driver now supports an additional map_size parameter.
| dba_popen | The lmdb driver now supports an additional map_size parameter.
7.3.6 | DatePeriod::__construct | recurrences must be greater than 0 now.
| SplFileObject::__toString | Changed from an alias of SplFileObject::current to an alias of SplFileObject::fgets.
7.3.5 | substr_compare | offset may now be equal to the length of haystack.
7.3.0 | DateTimeImmutable::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.
| assert | Declaring a function called assert() inside a namespace became deprecated. Such declaration now emits an E_DEPRECATED.
| 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.
| imagecreatefromstring | WEBP is supported now (if supported by the libgd in use).
| is_countable | is_countable has been added.
| json_decode | JSON_THROW_ON_ERROR flags was added.
| json_encode | JSON_THROW_ON_ERROR flags was added.
| ldap_add | Support for controls added
| ldap_compare | Support for controls added
| ldap_delete | Support for controls added
| ldap_exop | Support for controls added
| ldap_exop_passwd | Support for controls added
| ldap_list | Support for controls added
| ldap_mod_add | Support for controls added
| ldap_mod_del | Support for controls added
| ldap_mod_replace | Support for controls added
| ldap_modify_batch | Support for controls added
| ldap_mod_add_ext | Support for controls added
| ldap_mod_del_ext | Support for controls added
| ldap_mod_replace_ext | Support for controls added
| ldap_parse_result | Support for controls added
| ldap_read | Support for controls added
| ldap_rename | Support for controls added
| ldap_rename_ext | Support for controls added
| ldap_search | Support for controls 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 lifetime_or_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_parser_get_option | options now supports XML_OPTION_SKIP_TAGSTART and XML_OPTION_SKIP_WHITE.
| 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.2.19 | DatePeriod::__construct | recurrences must be greater than 0 now.
| SplFileObject::__toString | Changed from an alias of SplFileObject::current to an alias of SplFileObject::fgets.
7.2.18 | substr_compare | offset may now be equal to the length of haystack.
7.2.12 | DateInterval::format | The F and f format will now always be positive.
| xml_parser_get_option | options now supports XML_OPTION_SKIP_TAGSTART and XML_OPTION_SKIP_WHITE.
7.2.0 | array_unique | If 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 | num1 and num2 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 value 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.
| date_sun_info | The calculation was fixed with regards to local midnight instead of local noon, which changes the results slightly.
| exif_read_data | The file parameter now supports both local files and 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 file parameter now supports both local files and 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 | associative is nullable now.
| json_decode | JSON_INVALID_UTF8_IGNORE, and JSON_INVALID_UTF8_SUBSTITUTE flags were added.
| json_encode | JSON_INVALID_UTF8_IGNORE, and JSON_INVALID_UTF8_SUBSTITUTE flags were added.
| mail | The additional_headers parameter now also accepts an array.
| mb_check_encoding | This function now also accepts an array as value. Formerly, only strings have been supported.
| mb_convert_encoding | This function now also accepts an array as string. 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 num would be -0.01.
| openssl_pkcs7_verify | The output_filename 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.
| preg_quote | delimiter is nullable now.
| 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 from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.
| utf8_encode | This function has been moved from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.
| 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.
| ReflectionClass::getMethods | filter is nullable now.
| ReflectionClass::getProperties | filter is nullable now.
| SQLite3::openBlob | The flags parameter has been added, allowing to write BLOBs; formerly only reading was supported.
7.1.24 | 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 datetime 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.2 | dns_get_record | Added support for CAA record type.
| fopen | The 'e' option was added.
7.1.1 | get_defined_functions | The exclude_disabled parameter has been added.
| pack | The "e", "E", "g" and "G" codes were added to enable byte order support for float and double.
7.1.0 | DateInterval::format | The F and f format characters were added.
| DateTime::setTime | The microsecond parameter was added.
| DateTimeImmutable::__construct | From now on microseconds are filled with actual value. Not with '00000'.
| DateTimeImmutable::setTime | The microsecond parameter was added.
| DateTimeZone::listIdentifiers | countryCode is nullable now.
| 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 name can now be omitted to retrieve an associative array of all environment variables.
| getimagesize | Added WebP support.
| getopt | Added the rest_index parameter.
| grapheme_extract | Support for negative offsets 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 flags was added.
| json_encode | serialize_precision is used instead of precision when encoding float 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 ip has been changed from string to int.
| mb_ereg | mb_ereg will now set matches to an empty array, if nothing matched. Formerly, matches was not modified in that case.
| mb_ereg_replace | The function checks whether string is valid for the current encoding.
| mb_ereg_replace | The e modifier has been deprecated.
| mb_ereg_replace_callback | The function checks whether string is valid for the current encoding.
| mb_ereg_search_setpos | Support for negative offsets has been added.
| mb_eregi | mb_eregi will now set matches to an empty array, if nothing matched. Formerly, matches was not modified in that case.
| mb_eregi_replace | The function checks whether string is valid for the current encoding.
| mb_eregi_replace | The e modifier has been deprecated.
| mb_regex_set_options | The "e" option now emits an E_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 | rand has been made an alias of mt_rand.
| 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_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 | options 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 key of the options parameter was added to make it possible to create EC keys based on Elliptic Curve algorithms.
| output_add_rewrite_var | As of PHP 7.1.0, a dedicated output buffer is used, url_rewriter.tags is used solely for output functions and url_rewriter.hosts is available. Prior to PHP 7.1.0, rewrite variables set by output_add_rewrite_var shared an output buffer with transparent session id support (see session.trans_sid_tags).
| 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 siginfo of the specific signal. This data is only supplied if the operating system has the siginfo_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 mode parameter was added.
| pg_last_notice | The mode parameter was added.
| pg_select | The mode 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.
| tempnam | tempnam now emits a notice when falling back to the temp directory of the system.
| 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.
| SessionHandler::gc | Prior to this version, the function returned true on success.
| SessionHandlerInterface::gc | Prior to this version, the function returned true on success.
7.0.16 | dns_get_record | Added support for CAA record type.
| fopen | The 'e' option was added.
7.0.15 | get_defined_functions | The exclude_disabled parameter has been added.
| 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 string 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.
| SplFileObject::getCsvControl | Added the escape character to the returned array.
| SQLite3::__construct | The filename can now be empty to use a private, temporary on-disk database.
7.0.9 | getenv | The local_only parameter has been added.
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 | define | array values are allowed.
| dirname | Added the optional levels parameter.
| getrusage | This function is now supported on Windows.