ZendPHP November 2024 Releases
ZendPHP Changes
PHP version 8.4.1
Community dropped some extensions from the PHP main sources, extensions are now built from PECL sources, therefore the packaging changes on Linux and IBM i:
-
oci8
- have different packaging names for RPM based releases, provides old package naming for backward compatibility
-
pdo_oci
- to be installed separately as php8.4-zend-pdo-oci (deb) / php84zend-php-pecl-pdo-oci (RPMs). Or: zendphpctl ext install [ --php 8.4 ] pdo_oci
-
pspell
- have different packaging names for RPM based releases, provides old package naming for backward compatibility
-
imap
- have different packaging names for RPM based releases, provides old package naming for backward compatibility
RPM packages rebuilt and re-released 25 Nov 2024 as 8.4.1-1.
Fixed apache libphp and litespeed SAPI build options. Original release was built as ZTS, new build is fixed to be NTS. All loadable extensions are built as non-thread-safe, therefore sapi modules built as ZTS cannot use NTS extension modules.
Community CVE Fixes
PHP version 8.3.14, 8.2.26, 8.1.31 CVE fixes
-
LDAP
- Fixed bug GHSA-g665-fm4p-vhff: OOB access in
ldap_escape. (CVE-2024-8932)
- Fixed bug GHSA-g665-fm4p-vhff: OOB access in
-
MySQLnd
- Fixed bug GHSA-h35g-vwh6-m678: Leak partial content of the heap through heap buffer over-read. (CVE-2024-8929)
-
PDO DBLIB
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
dblibquoter causing OOB writes. (CVE-2024-11236)
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
-
PDO Firebird
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
firebirdquoter causing OOB writes. (CVE-2024-11236)
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
-
Streams
- Fixed bug GHSA-c5f2-jwm7-mmq2: Configuring a proxy in a stream context might allow for CRLF injection in URIs. (CVE-2024-11234)
- Fixed bug GHSA-r977-prxv-hc43: Single byte overread with
convert.quoted-printable-decodefilter. (CVE-2024-11233)
Backported PHP CVE Fixes
PHP version 7.2.34.21, 7.3.33.13, 7.4.33.8, 8.0.30.4 CVE fixes
-
CLI
- Fixed bug GHSA-4w77-75f9-2c8w: Heap-Use-After-Free in
sapi_read_post_dataProcessing in CLI SAPI Interface.
- Fixed bug GHSA-4w77-75f9-2c8w: Heap-Use-After-Free in
-
LDAP
- Fixed bug GHSA-g665-fm4p-vhff: OOB access in
ldap_escape. (CVE-2024-8932)
- Fixed bug GHSA-g665-fm4p-vhff: OOB access in
-
MySQLnd
- Fixed bug GHSA-h35g-vwh6-m678: Leak partial content of the heap through heap buffer over-read. (CVE-2024-8929)
-
PDO DBLIB
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
dblibquoter causing OOB writes. (CVE-2024-11236)
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
-
PDO Firebird
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
firebirdquoter causing OOB writes. (CVE-2024-11236)
- Fixed bug GHSA-5hqh-c84r-qjcv: Integer overflow in the
-
Streams
- Fixed bug GHSA-c5f2-jwm7-mmq2: Configuring a proxy in a stream context might allow for CRLF injection in URIs. (CVE-2024-11234)
- Fixed bug GHSA-r977-prxv-hc43: Single byte overread with
convert.quoted-printable-decodefilter. (CVE-2024-11233)
Community Changes
PHP version 8.4.1 changes
-
BcMath
- [RFC] Add bcfloor, bcceil and bcround to BCMath.
- Improve performance.
- Adjust bcround()'s $mode parameter to only accept the RoundingMode enum.
- Fixed LONG_MAX in BCMath ext.
- Fixed bcdiv() div by one.
- [RFC] Support object types in BCMath.
- bcpow() performance improvement.
- ext/bcmath: Check for scale overflow.
- [RFC] ext/bcmath: Added bcdivmod.
- Fix GH-15968: Avoid converting objects to strings in operator calculations.
- Fixed bug GH-16265: Added early return case when result is 0.
- Fixed bug GH-16262: Fixed a bug where size_t underflows.
- Fixed GH-16236: Fixed a bug in BcMath\Number::pow() and bcpow() when raising negative powers of 0
-
Core
- Added zend_call_stack_get implementation for NetBSD, DragonFlyBSD, Solaris and Haiku.
- Enabled ifunc checks on FreeBSD from the 12.x releases.
- Changed the type of PHP_DEBUG and PHP_ZTS constants to bool.
- Fixed bug GH-13142: Undefined variable name is shortened when contains \0.
- Fixed bug GH-13178: Iterator positions incorrect when converting packed array to hashed.
- Fixed zend fiber build for solaris default mode (32 bits).
- Fixed zend call stack size for macOs/arm64.
- Added support for Zend Max Execution Timers on FreeBSD.
- Ensure fiber stack is not backed by THP.
- Implement GH-13609: Dump wrapped object in WeakReference class.
- Added sparc64 arch assembly support for zend fiber.
- Fixed GH-13581 no space available for TLS on NetBSD.
- Added fiber Sys-V loongarch64 support.
- Adjusted closure names to include the parent function's name.
- Improve randomness of uploaded file names and files created by tempnam().
- Added gc and shutdown callbacks to zend_mm custom handlers.
- Fixed bug GH-14650: Compute the size of pages before allocating memory.
- Fixed bug GH-11928: The --enable-re2c-cgoto doesn't add the -g flag.
- Added the #[\Deprecated] attribute.
- Fixed GH-11389: Allow suspending fibers in destructors.
- Fixed bug GH-14801: Fix build for armv7.
- Implemented property hooks RFC.
- Fix GH-14978: The xmlreader extension phpize build.
- Throw Error exception when encountering recursion during comparison, rather than fatal error.
- Added missing cstddef include for C++ builds.
- Updated build system scripts config.guess to 2024-07-27 and config.sub to 2024-05-27.
- Fixed bug GH-15240: Infinite recursion in trait hook.
- Fixed bug GH-15140: Missing variance check for abstract set with asymmetric type.
- Fixed bug GH-15181: Disabled output handler is flushed again.
- Passing E_USER_ERROR to trigger_error() is now deprecated.
- Fixed bug GH-15292: Dynamic AVX detection is broken for MSVC.
- Using "_" as a class name is now deprecated.
- Exiting a namespace now clears seen symbols.
- The exit (and die) language constructs now behave more like a function. They can be passed liked callables, are affected by the strict_types declare statement, and now perform the usual type coercions instead of casting any non-integer value to a string. As such, passing invalid types to exit/die may now result in a TypeError being thrown.
- Fixed bug GH-15438: Hooks on constructor promoted properties without visibility are ignored.
- Fixed bug GH-15419: Missing readonly+hook incompatibility check for readonly classes.
- Fixed bug GH-15187: Various hooked object iterator issues.
- Fixed bug GH-15456: Crash in get_class_vars() on virtual properties.
- Fixed bug GH-15501: Windows HAVE_
_H macros defined to 1 or undefined. - Implemented asymmetric visibility for properties.
- Fixed bug GH-15644: Asymmetric visibility doesn't work with hooks.
- Implemented lazy objects RFC.
- Fixed bug GH-15686: Building shared iconv with external iconv library.
- Fixed missing error when adding asymmetric visibility to unilateral virtual property.
- Fixed bug GH-15693: Unnecessary include in main.c bloats binary.
- Fixed bug GH-15731: AllowDynamicProperties validation should error on enums.
- Fixed bug GH-16040: Use-after-free of object released in hook.
- Fixed bug GH-16026: Reuse of dtor fiber during shutdown.
- Fixed bug GH-15999: zend_std_write_property() assertion failure with lazy objects.
- Fixed bug GH-15960: Foreach edge cases with lazy objects.
- Fixed bug GH-16185: Various hooked object iterator issues.
- Fixed bug OSS-Fuzz #371445205: Heap-use-after-free in attr_free.
- Fixed missing error when adding asymmetric visibility to static properties.
- Fixed bug OSS-Fuzz #71407: Null-dereference WRITE in zend_lazy_object_clone.
- Fixed bug GH16574: Incorrect error "undefined method" messages.
- Fixed bug GH16577:
EG(strtod_state).freelistleaks withopcache.preload. - Fixed bug GH16574: Incorrect error "undefined method" messages.
- Fixed bug GH16577:
EG(strtod_state).freelistleaks withopcache.preload. - Fixed bug GH16615: Assertion failure in
zend_std_read_property. - Fixed bug GH16342: Added
ReflectionProperty::isLazy(). - Fixed bug GH16725: Incorrect access check for non-hooked properties in hooked object iterator.
-
Curl
- Deprecated the
CURLOPT_BINARYTRANSFERconstant. - Bumped required libcurl version to 7.61.0.
- Added
feature_listkey to thecurl_version()return value. - Added constants
CURL_HTTP_VERSION_3(libcurl 7.66) andCURL_HTTP_VERSION_3ONLY(libcurl 7.88) as options forCURLOPT_HTTP_VERSION. - Added
CURLOPT_TCP_KEEPCNTto set the number of probes to send before dropping the connection. - Added
CURLOPT_PREREQFUNCTIONCurl option to set a custom callback after the connection is established but before the request is performed. - Added
CURLOPT_SERVER_RESPONSE_TIMEOUT, which was formerly known asCURLOPT_FTP_RESPONSE_TIMEOUT. - The
CURLOPT_DNS_USE_GLOBAL_CACHEoption is now silently ignored. - Added
CURLOPT_DEBUGFUNCTIONas a Curl option. - Fixed bug GH16359: Crash with
curl_setopt* CURLOPT_WRITEFUNCTIONwithout null callback. - Fixed bug GH16723:
CURLMOPT_PUSHFUNCTIONissues.
- Deprecated the
-
Date
- Added
DateTime[Immutable]::createFromTimestamp. - Added
DateTime[Immutable]::[get|set]Microsecond. - Constants
SUNFUNCS_RET_TIMESTAMP,SUNFUNCS_RET_STRING, andSUNFUNCS_RET_DOUBLEare now deprecated. - Fixed bug GH13773:
DatePeriodnot taking into account microseconds for end date.
- Added
-
DBA
- Passing
nullorfalsetodba_key_split()is deprecated.
- Passing
-
Debugging
- Fixed bug GH15923: GDB: Python Exception
: exceptions must derive fromBaseException.
- Fixed bug GH15923: GDB: Python Exception
-
DOM
- Added
DOMNode::compareDocumentPosition() - Implemented #53655: Improve speed of
DOMNode::C14N()on large XML documents. - Fixed cloning attribute with namespace disappearing namespace.
- Implemented DOM HTML5 parsing and serialization RFC.
- Fixed
DOMElement->prefixwith empty string creating bogus prefix. - Handled OOM more consistently.
- Implemented "Improve callbacks in ext/dom and ext/xsl" RFC.
- Added
DOMXPath::quote()static method. - Implemented opt-in ext/dom spec compliance RFC.
- Fixed bug #79701:
getElementByIddoes not correctly work with duplicate definitions. - Implemented "New extdom features in PHP 8.4" RFC.
- Fixed bug GH14698: Segfault on DOM node dereference.
- Improved support for template elements.
- Fixed trampoline leak in XPath callables.
- Throws instead of silently failing when creating a too long text node in
(DOM)ParentNodeand(DOM)ChildNode. - Fixed bug GH15192: Segmentation fault in DOM extension (html5_serializer).
- Deprecated
DOM_PHP_ERRconstant. - Removed
DOMImplementation::getFeature(). - Fixed bug GH15331:
Element::$substitutedNodeValuetest failed. - Fixed bug GH15570: Segmentation fault (access null pointer) in
ext/dom/html5_serializer.c. - Fixed bug GH13988: Storing
DOMElementconsumes 4 times more memory in PHP 8.1 than in PHP 8.0. - Fixed XML serializer errata:
xmlns=""serialization should be allowed. - Fixed bug GH15910: Assertion failure in
ext/dom/element.c. - Fixed unsetting of DOM properties.
- Fixed bug GH16190: Using reflection to call
Dom\Node::__constructcauses assertion failure. - Fixed edge case in DOM parsing decoding.
- Fixed bug GH16465: Heap buffer overflow in
DOMNode->getElementByTagName. - Fixed bug GH16594: Assertion failure in DOM > before.
- Added
-
Fileinfo
- Updated to
libmagic5.45. - Fixed bug #65106: PHP fails to compile
ext/fileinfo.
- Updated to
-
FPM
- Implemented GH12385: Flush headers without body when calling
flush(). - Added DragonFlyBSD system to the list which sets
FPM_BACKLOG_DEFAULTtoSOMAXCONN. -
/dev/pollevents.mechanism for Solaris/Illumos setting has been retired. - Added memory peak to the scoreboard/status page.
- Implemented GH12385: Flush headers without body when calling
-
FTP
- Removed the deprecated
inet_ntoacall support. - Fixed bug #63937: Upload speed 10 times slower with PHP.
- Removed the deprecated
-
GD
- Fixed parameter numbers and missing alpha check for
imagecolorset(). -
imagepng,imagejpeg,imagewep, andimageavifnow throw an exception on invalid quality parameter. - Checked overflow/underflow for
imagescaleandimagefilter. - Added
gdImageCloneto bundled libgd.
- Fixed parameter numbers and missing alpha check for
-
Gettext
-
bind_textdomain_codeset,textdomain, andd(*)gettextfunctions now throw an exception on empty domain.
-
-
GMP
- The
GMPclass is now final and cannot be extended anymore. - RFC: Changed GMP bool cast behavior.
- The
-
Hash
- Changed return type of
hash_update()totrue. - Added
HashContext::__debugInfo().
- Changed return type of
-
IMAP
- Moved to PECL.
-
Intl
- Added
IntlDateFormatter::PATTERNconstant. - Fixed
Numberformatter::__constructwhen the locale is invalid, now throws an exception. - Added
NumberFormatter::ROUND_TOWARD_ZEROand::ROUND_AWAY_FROM_ZEROas aliases for::ROUND_DOWNand::ROUND_UP. - Added
NumberFormatter::ROUND_HALFODD. - Added
PROPERTY_IDS_UNARY_OPERATOR,PROPERTY_ID_COMPAT_MATH_START, andPROPERTY_ID_COMPAT_MATH_CONTINUEconstants. - Added
IntlDateFormatter::getIanaID/intltz_get_iana_idmethod/function. - Set to C++17 standard for ICU 74 and onwards.
-
resourcebundle_get(),ResourceBundle::get(), and accessing offsets on aResourceBundleobject now throw:-
TypeErrorfor invalid offset types. -
ValueErrorfor an empty string. -
ValueErrorif the integer index does not fit in a signed 32-bit integer.
-
-
ResourceBundle::get()now has a tentative return type of:ResourceBundle|array|string|int|null. - Added the new Grapheme function
grapheme_str_split. - Added
IntlDateFormatter::parseToCalendar. - Added
SpoofChecker::setAllowedCharsto set Unicode character ranges.
- Added
-
LDAP
- Added
LDAP_OPT_X_TLS_PROTOCOL_MAX/LDAP_OPT_X_TLS_PROTOCOL_TLS1_3constants.
- Added
-
LibXML
- Added
LIBXML_RECOVERconstant. -
libxml_set_streams_context()now throws immediately on an invalid context instead of at the use site. - Added
LIBXML_NO_XXEconstant.
- Added
-
MBString
- Added
mb_trim,mb_ltrim, andmb_rtrim. - Added
mb_ucfirstandmb_lcfirst. - Updated Unicode data tables to Unicode 15.1.
- Fixed bug GH15824:
mb_detect_encoding(): Argument$encodingscontains invalid encoding"UTF8". - Updated Unicode data tables to Unicode 16.0.
- Added
-
Mysqli
- The
mysqli_ping()function andmysqli::ping()method are now deprecated, as the reconnect feature was removed in PHP 8.2. - The
mysqli_kill()function andmysqli::kill()method are now deprecated. If this functionality is needed, a SQL"KILL"command can be used instead. - The
mysqli_refresh()function andmysqli::refresh()method are now deprecated. If this functionality is needed, a SQL"FLUSH"command can be used instead. - Passing explicitly the
$modeparameter tomysqli_store_result()has been deprecated. - As the
MYSQLI_STORE_RESULT_COPY_DATAconstant was only used in conjunction with this function, it has also been deprecated.
- The
-
MySQLnd
- Fixed bug GH13440: PDO quote bottleneck.
- Fixed bug GH10599: Apache crash on Windows when using a self-referencing anonymous function inside a class with an active MySQLi connection.
-
Opcache
- Added large shared segments support for FreeBSD.
- If JIT is enabled, PHP will now exit with a fatal error on startup in case of JIT startup initialization issues.
- Increased the maximum value of
opcache.interned_strings_bufferto 32767 on 64-bit architectures. - Fixed bug GH13834: Applying nonzero offset 36 to null pointer in
zend_jit.c. - Fixed bug GH14361: Deep recursion in
zend_cfg.ccauses segfault. - Fixed bug GH14873: PHP 8.4
minfunction fails on typed integer. - Fixed bug GH15490: Building of call graph modifies preloaded symbols.
- Fixed bug GH15178: Assertion in tracing JIT on hooks.
- Fixed bug GH15657: Segmentation fault in
dasm_x86.h. - Added
opcache_jit_blacklist()function. - Fixed bug GH16009: Segmentation fault with frameless functions and undefined CVs.
- Fixed bug GH16186: Assertion failure in
Zend/zend_operators.c. - Fixed bug GH16572: Incorrect result with reflection in low-trigger JIT.
- Fixed bug GH16839: Error on building Opcache JIT for Windows ARM64.
-
OpenSSL
- Fixed bug #80269: OpenSSL sets Subject wrong with
extraattribsparameter. - Implemented request #48520:
openssl_csr_newallows multiple values in DN. - Introduced new
serial_hexparameter toopenssl_csr_sign. - Added
X509_PURPOSE_OCSP_HELPERandX509_PURPOSE_TIMESTAMP_SIGNconstants. - Bumped minimum required OpenSSL version to 1.1.1.
- Added compile-time option
--with-openssl-legacy-providerto enable legacy provider. - Added support for Curve25519 + Curve448 based keys.
- Fixed bug GH13343:
openssl_x509_parseshould not allow omitted seconds in UTC times. - Bumped minimum required OpenSSL version to 1.1.0.
- Implemented GH13514:
PASSWORD_ARGON2from OpenSSL 3.2.
- Fixed bug #80269: OpenSSL sets Subject wrong with
-
Output
- Clear output handler status flags during handler initialization.
- Fixed bug with
url_rewriter.hostsnot used byoutput_add_rewrite_var().
-
PCNTL
- Added
pcntl_setnsfor Linux. - Added
pcntl_getcpuaffinity/pcntl_setcpuaffinity. - Updated
pcntl_get_signal_handlersignal ID upper limit to be more in line with platform limits. - Added
pcntl_getcpufor Linux/FreeBSD/Solaris/Illumos. - Added
pcntl_getqos_class/pcntl_setqos_classfor macOS. - Added
SIGCKPT/SIGCKPTEXITconstants for DragonFlyBSD. - Added FreeBSD's
SIGTRAPhandling topcntl_siginfo_to_zval. - Added POSIX
pcntl_waitid. - Fixed bug GH16769:
pcntl_sigwaitinfoaborts on signal value as reference.
- Added
-
PCRE
- Upgraded bundled
pcre2libto version 10.43. - Added
/rmodifier. - Upgraded bundled
pcre2libto version 10.44. - Fixed GH16189: Underflow on offset argument.
- Fixed UAF issues with PCRE after request shutdown.
- Upgraded bundled
-
PDO
- Fixed
setAttributeandgetAttribute. - Implemented PDO driver-specific subclasses RFC.
- Added support for PDO driver-specific SQL parsers.
- Fixed bug GH14792: Compilation failure on
pdo_*extensions. -
mysqlndsupportsER_CLIENT_INTERACTION_TIMEOUT. - The internal header
php_pdo_int.his no longer installed; it is not supposed to be used by PDO drivers. - Fixed bug GH16167: Prevent mixing PDO subclasses with different DSN.
- Fixed bug GH16314:
"Pdo\Mysql object is uninitialized"when opening a persistent connection.
- Fixed
-
PDO_DBLIB
- Fixed
setAttributeandgetAttribute. - Added class
Pdo\DbLib.
- Fixed
-
PDO_Firebird
- Fixed
setAttributeandgetAttribute. - Added transaction isolation level and mode settings to
pdo_firebird. - Added class
Pdo\Firebird. - Added
Pdo\Firebird::ATTR_API_VERSION. - Added
getApiVersion()and removed it fromgetAttribute(). - Supported Firebird 4.0 datatypes.
- Supported proper formatting of time zone types.
- Fixed GH15604: Always make input parameters nullable.
- Fixed
-
PDO_MYSQL
- Fixed
setAttributeandgetAttribute. - Added class
Pdo\Mysql. - Added custom SQL parser.
- Fixed GH15949:
PDO_MySQLnot properly quotingPDO_PARAM_LOBbinary data.
- Fixed
-
PDO_ODBC
- Added class
Pdo\Odbc.
- Added class
-
PDO_PGSQL
- Fixed GH12423: DSN credentials being prioritized over the
user/passwordPDO constructor arguments. - Fixed native float support with
pdo_pgsqlquery results. - Added class
Pdo\Pgsql. - Retrieve the memory usage of the query result resource.
- Added
Pdo\Pgsql::setNoticeCallBackmethod to receive DB notices. - Added custom SQL parser.
- Fixed GH15986: Double free due to
Pdo\Pgsql::setNoticeCallback(). - Fixed GH12940: Using
PQclosePreparedwhen available instead of theDEALLOCATEcommand to free statement resources. - Removed
PGSQL_ATTR_RESULT_MEMORY_SIZEconstant as it is provided by the new PDO subclass asPdo\Pgsql::ATTR_RESULT_MEMORY_SIZE.
- Fixed GH12423: DSN credentials being prioritized over the
-
PDO_SQLITE
- Added class
Pdo\Sqlite. - Fixed bug #81227:
PDO::inTransactionreports false when in a transaction. - Added custom SQL parser.
- Added class
-
PHPDBG
- Array out of bounds and stack overflow handled for segfault handler on Windows.
- Fixed bug GH16041: Support stack limit in
phpdbg.
-
PGSQL
- Added the possibility to have no conditions for
pg_select. - Persistent connections support the
PGSQL_CONNECT_FORCE_RENEWflag. - Added
pg_result_memory_sizeto get the query result memory usage. - Added
pg_change_passwordto alter a user's password. - Added
pg_put_copy_data/pg_put_copy_endto sendCOPYcommands and signal the end of theCOPY. - Added
pg_socket_pollto poll on the connection. - Added
pg_jitto get information on server JIT support. - Added
pg_set_chunked_rows_sizeto fetch results per chunk.
-pg_convert/pg_insert/pg_update/pg_delete: Regular expressions are now cached.
- Added the possibility to have no conditions for
-
Phar
- Fixed bug GH12532: PharData created from zip has incorrect timestamp.
-
POSIX
- Added POSIX_SC_CHILD_MAX and POSIX_SC_CLK_TCK constants.
- Updated posix_isatty to set the error number on file descriptors.
-
PSpell
- Moved to PECL.
-
Random
- Fixed bug GH15094: php_random_default_engine() is not C++ conforming.
- lcg_value() is now deprecated.
-
Readline
- Fixed readline_info, rl_line_buffer_length/rl_len globals on update.
- Fixed bug #51558: Shared readline build fails.
- Fixed UAF with readline_info().
-
Reflection
- Implement GH12908: Show attribute name/class in ReflectionAttribute dump.
- Make
ReflectionGenerator::getFunction()legal after generator termination. - Added
ReflectionGenerator::isClosed(). - Fixed bug GH15718: Segfault on
ReflectionProperty::get{Hook,Hooks}()on dynamic properties. - Fixed bug GH15694:
ReflectionProperty::isInitialized()is incorrect for hooked properties. - Add missing
ReflectionProperty::hasHook[s]()methods. - Add missing
ReflectionProperty::isFinal()method. - Fixed bug GH16122: The return value of
ReflectionFunction::getNamespaceName()andReflectionFunction::inNamespace()for closures is incorrect. - Fixed bug GH16162: No
ReflectionProperty::IS_VIRTUAL. - Fixed the name of the second parameter of
ReflectionClass::resetAsLazyGhost().
-
Session
- INI settings
session.sid_lengthandsession.sid_bits_per_characterare now deprecated. - Emit warnings for nonpositive values of
session.gc_divisorand negative values ofsession.gc_probability. - Fixed bug GH16590: UAF in
session_encode().
- INI settings
-
SimpleXML
- Fix signature of
simplexml_import_dom().
- Fix signature of
-
SNMP
- Removed the deprecated
inet_ntoacall support.
- Removed the deprecated
-
SOAP
- Add support for clark notation for namespaces in class map.
- Mitigate #51561: SoapServer with an extended class and using sessions lost the
setPersistence(). - Fixed bug #49278:
SoapClient::__getLastResponseHeadersreturns NULL if WSDL operation has no output. - Fixed bug #44383: PHP
DateTimenot converted toxsd:datetime. - Fixed bug GH11941: Soap with session persistence will silently fail when "session" is built as a shared object.
- Passing an int to
SoapServer::addFunction()is now deprecated. If all PHP functions need to be provided, flatten the array returned byget_defined_functions(). - The
SOAP_FUNCTIONS_ALLconstant is now deprecated. - Fixed bug #61525: SOAP functions require at least one space after HTTP header colon.
- Implement request #47317:
SoapServer::__getLastResponse().
-
Sockets
- Removed the deprecated
inet_ntoacall support. - Added the
SO_EXCLUSIVEADDRUSEwindows constant. - Added the
SOCK_CONN_DGRAM/SOCK_DCCPNetBSD constants. - Added multicast group support for IPv4 on FreeBSD.
- Added the
TCP_SYNCNTconstant for Linux to set the number of attempts to send SYN packets from the client. - Added the
SO_EXCLBINDconstant for exclusive socket binding on illumos/Solaris. - Updated the
socket_create_listenbacklog argument default value toSOMAXCONN. - Added the
SO_NOSIGPIPEconstant to control the generation of SIGPIPE for macOS and FreeBSD. - Added
SO_LINGER_SECfor macOS, true equivalent ofSO_LINGERin other platforms. - Added
closeonexecon socket created withsocket_accepton Unix. - Added
IP_PORTRANGE*constants for BSD systems to control ephemeral port ranges. - Added
SOCK_NONBLOCK/SOCK_CLOEXECconstants forsocket_createandsocket_create_pairto apply O_NONBLOCK/O_CLOEXEC flags to newly created sockets. - Added
SO_BINDTOIFINDEXto bind a socket to an interface index.
- Removed the deprecated
-
Sodium
- Add support for AEGIS128L and AEGIS256.
- Enable AESGCM on aarch64 with the ARM crypto extensions.
-
SPL
- Implement
SeekableIteratorforSplObjectStorage. - The
SplFixedArray::__wakeup()method has been deprecated as it implements__serialize()and__unserialize()which need to be overwritten instead. - Passing a nonempty string for the
$escapeparameter ofSplFileObject::setCsvControl(),SplFileObject::fputcsv(),SplFileObject::fgetcsv()is now deprecated.
- Implement
-
Standard
- Implement GH12188: Indication for the int size in
phpinfo(). - Partly fix GH12143: Incorrect
round()result for 0.49999999999999994. - Fix GH12252:
round(): Validate the rounding mode. - Increase the default BCrypt cost to 12.
- Fixed bug GH12592:
strcspn()odd behavior with NUL bytes and empty mask. - Removed the deprecated
inet_ntoacall support. - Cast large floats that are within int range to int in
number_formatso the precision is not lost. - Add support for 4 new rounding modes to the
round()function. -
debug_zval_dump()now indicates whether an array is packed. - Fix GH12143: Optimize
round. - Changed return type of
long2iptostringfromstring|false. - Fix GH12143: Extend the maximum precision
roundcan handle by one digit. - Added the
http_get_last_response_headers()andhttp_clear_last_response_headers()that allows retrieving the same content as the magic$http_response_headervariable. - Add
php_base64_encode_ex()API. - Implemented "Raising zero to the power of a negative number" RFC.
- Added
array_find(),array_find_key(),array_all(), andarray_any(). - Change
highlight_string()andprint_r()return type tostring|true. - Fix references in
request_parse_body()options array. - Add
RoundingModeenum. - Unserializing the uppercase 'S' tag is now deprecated.
- Enables
crc32auxiliary detection on OpenBSD. - Passing a nonempty string for the
$escapeparameter offputcsv(),fgetcsv(),str_getcsv()is now deprecated. - The
str_getcsv()function now throwsValueErrorswhen the$separatorand$enclosurearguments are not one byte long, or if the$escapeis not one byte long or the empty string. This aligns the behavior to be identical to that offputcsv()andfgetcsv(). -
php_uname()now throwsValueErrorson invalid inputs. - The
allowed_classesoption forunserialize()now throwsTypeErrorsandValueErrorsif it is not an array of class names. - Implemented GH15685: Improve
proc_openerror reporting on Windows. - Add support for backed enums in
http_build_query(). - Fixed bug GH15982: Assertion failure with
array_findwhen references are involved. - Fixed parameter names of
fpow()to be identical topow().
- Implement GH12188: Indication for the int size in
-
Streams
- Implemented GH15155: Stream context is lost when custom stream wrapper is being filtered.
-
Tidy
- Failures in the constructor now throw exceptions rather than emitting warnings and having a broken object.
- Add
tidyNode::getNextSibling()andtidyNode::getPreviousSibling().
-
Windows
- Update the icon of the Windows executables, e.g.
php.exe. - Fixed bug GH16199:
GREP_HEADER()is broken.
- Update the icon of the Windows executables, e.g.
-
XML
- Added
XML_OPTION_PARSE_HUGEparser option. - Fixed bug #81481:
xml_get_current_byte_indexlimited to 32bit numbers on 64bit builds. - The
xml_set_object()function has been deprecated. - Passing noncallable strings to the
xml_set_*_handler()functions is now deprecated.
- Added
-
XMLReader
- Declares class constant types.
- Add
XMLReader::fromStream(),XMLReader::fromUri(),XMLReader::fromString(). - Fixed bug GH15123:
var_dumpdoesn't actually work onXMLReader.
-
XMLWriter
- Add
XMLWriter::toStream(),XMLWriter::toUri(),XMLWriter::toMemory().
- Add
-
XSL
- Implement request #64137:
XSLTProcessor::setParameter()should allow both quotes to be used. - Implemented "Improve callbacks in ext/dom and ext/xsl" RFC.
- Added
XSLTProcessor::$maxTemplateDepthandXSLTProcessor::$maxTemplateVars. - Fix trampoline leak in xpath callables.
- Implement request #64137:
-
Zip
- Added ZipArchive::ER_TRUNCATED_ZIP added in libzip 1.11.
Community Fixes
PHP version 8.3.14 fixes
-
CLI
- Fixed bug GH-16373: Shebang is not skipped for router script in
cli-serverstarted through shebang. - Fixed bug GHSA-4w77-75f9-2c8w: Heap-Use-After-Free in
sapi_read_post_dataProcessing in CLI SAPI Interface.
- Fixed bug GH-16373: Shebang is not skipped for router script in
-
COM
- Fixed out of bound writes to
SafeArraydata.
- Fixed out of bound writes to
-
Core
- Fixed bug GH-16168:
php 8.1and earlier crash immediately when compiled withXcode 16 clangonmacOS 15. - Fixed bug GH-16371: Assertion failure in
Zend/zend_weakrefs.c:646. - Fixed bug GH-16515: Incorrect propagation of
ZEND_ACC_RETURN_REFERENCEfor call trampoline. - Fixed bug GH-16509: Incorrect line number in function redeclaration error.
- Fixed bug GH-16508: Incorrect line number in inheritance errors of delayed early bound classes.
- Fixed bug GH-16648: Use-after-free during array sorting.
- Fixed bug GH-16168:
-
Curl
- Fixed bug GH-16302:
CurlMultiHandleholds a reference toCurlHandleifcurl_multi_add_handlefails.
- Fixed bug GH-16302:
-
Date
- Fixed bug GH-16454: Unhandled INF in
date_sunset()with tiny$utcOffset. - Fixed bug GH-14732:
date_sun_info()fails for non-finite values.
- Fixed bug GH-16454: Unhandled INF in
-
DBA
- Fixed bug GH-16390:
dba_open()can segfault for "pathless" streams.
- Fixed bug GH-16390:
-
DOM
- Fixed bug GH-16316:
DOMXPathbreaks when not initialized properly. - Add missing hierarchy checks to
replaceChild. - Fixed bug GH-16336: Attribute intern document mismanagement.
- Fixed bug GH-16338: Null-dereference in
ext/dom/node.c. - Fixed bug GH-16473:
dom_import_simplexmlstub is wrong. - Fixed bug GH-16533: Segfault when adding attribute to parent that is not an element.
- Fixed bug GH-16535: UAF when using document as a child.
- Fixed bug GH-16593: Assertion failure in
DOM->replaceChild. - Fixed bug GH-16595: Another UAF in
DOM -> cloneNode.
- Fixed bug GH-16316:
-
EXIF
- Fixed bug GH-16409: Segfault in
exif_thumbnailwhen not dealing with a real file.
- Fixed bug GH-16409: Segfault in
-
FFI
- Fixed bug GH-16397: Segmentation fault when comparing
FFIobject.
- Fixed bug GH-16397: Segmentation fault when comparing
-
Filter
- Fixed bug GH-16523:
FILTER_FLAG_HOSTNAMEaccepts ending hyphen.
- Fixed bug GH-16523:
-
FPM
- Fixed bug GH-16628:
FPMlogs are getting corrupted with this log statement.
- Fixed bug GH-16628:
-
GD
- Fixed bug GH-16334:
imageaffineoverflow on matrix elements. - Fixed bug GH-16427: Unchecked
libavifreturn values. - Fixed bug GH-16559: UBSan abort in
ext/gd/libgd/gd_interpolation.c:1007.
- Fixed bug GH-16334:
-
GMP
- Fixed floating point exception bug with
gmp_powwhen using large exposant values. - Fixed bug GH-16411:
gmp_export()can cause overflow. - Fixed bug GH-16501:
gmp_random_bits()can cause overflow. - Fixed
gmp_pow()overflow bug with large base/exponents. - Fixed segfaults and other issues related to operator overloading with
GMPobjects.
- Fixed floating point exception bug with
-
MBstring
- Fixed bug GH-16361:
mb_substroverflow on start/length arguments.
- Fixed bug GH-16361:
-
Opcache
- Fixed bug GH-16408: Array to string conversion warning emitted in optimizer.
-
OpenSSL
- Fixed bug GH-16357:
opensslmay modify member types of certificate arrays. - Fixed bug GH-16433: Large values for
openssl_csr_sign()$daysoverflow. - Fix various memory leaks on error conditions in
openssl_x509_parse().
- Fixed bug GH-16357:
-
PDO ODBC
- Fixed bug GH-16450:
PDO_ODBCcan inject garbage into field values.
- Fixed bug GH-16450:
-
Phar
- Fixed bug GH-16406: Assertion failure in
ext/phar/phar.c:2808.
- Fixed bug GH-16406: Assertion failure in
-
PHPDBG
- Fixed bug GH-16174: Empty string is an invalid expression for
ev.
- Fixed bug GH-16174: Empty string is an invalid expression for
-
Reflection
- Fixed bug GH-16601: Memory leak in Reflection constructors.
-
Session
- Fixed bug GH-16385: Unexpected null returned by
session_set_cookie_params. - Fixed bug GH-16290: Overflow on
cookie_lifetimeini value.
- Fixed bug GH-16385: Unexpected null returned by
-
SOAP
- Fixed bug GH-16318: Recursive array segfaults soap encoding.
- Fixed bug GH-16429: Segmentation fault access null pointer in
SoapClient.
-
Sockets
- Fixed bug with overflow
socket_recvfrom$lengthargument.
- Fixed bug with overflow
-
SPL
- Fixed bug GH-16337: Use-after-free in
SplHeap. - Fixed bug GH-16464: Use-after-free in
SplDoublyLinkedList::offsetSet(). - Fixed bug GH-16479: Use-after-free in
SplObjectStorage::setInfo(). - Fixed bug GH-16478: Use-after-free in
SplFixedArray::unset(). - Fixed bug GH-16588: UAF in
Observer->serialize. - Fix GH-16477: Segmentation fault when calling
__debugInfo()after failedSplFileObject::__constructor. - Fixed bug GH-16589: UAF in
SplDoublyLinked->serialize(). - Fixed bug GH-14687: Segfault on
SplObjectIteratorinstance. - Fixed bug GH-16604: Memory leaks in SPL constructors.
- Fixed bug GH-16646: UAF in
ArrayObject::unset()andArrayObject::exchangeArray().
- Fixed bug GH-16337: Use-after-free in
-
Standard
- Fixed bug GH-16293: Failed assertion when throwing in
assert()callback with bail enabled.
- Fixed bug GH-16293: Failed assertion when throwing in
-
SysVMsg
- Fixed bug GH-16592:
msg_send()crashes when a type does not properly serialize.
- Fixed bug GH-16592:
-
SysVShm
- Fixed bug GH-16591: Assertion error in
shm_put_var.
- Fixed bug GH-16591: Assertion error in
-
XMLReader
- Fixed bug GH-16292: Segmentation fault in
ext/xmlreader/php_xmlreader.c.
- Fixed bug GH-16292: Segmentation fault in
-
Zlib
- Fixed bug GH-16326: Memory management is broken for bad dictionaries.
PHP version 8.2.26 fixes
-
CLI
- Fixed bug GH-16373: Shebang is not skipped for router script in
cli-serverstarted through shebang. - Fixed bug GHSA-4w77-75f9-2c8w: Heap-Use-After-Free in
sapi_read_post_dataProcessing in CLI SAPI Interface.
- Fixed bug GH-16373: Shebang is not skipped for router script in
-
COM
- Fixed out of bound writes to
SafeArraydata.
- Fixed out of bound writes to
-
Core
- Fixed bug GH-16168:
php 8.1and earlier crash immediately when compiled withXcode 16 clangonmacOS 15. - Fixed bug GH-16371: Assertion failure in
Zend/zend_weakrefs.c:646. - Fixed bug GH-16515: Incorrect propagation of
ZEND_ACC_RETURN_REFERENCEfor call trampoline. - Fixed bug GH-16509: Incorrect line number in function redeclaration error.
- Fixed bug GH-16508: Incorrect line number in inheritance errors of delayed early bound classes.
- Fixed bug GH-16648: Use-after-free during array sorting.
- Fixed bug GH-16168:
-
Curl
- Fixed bug GH-16302:
CurlMultiHandleholds a reference toCurlHandleifcurl_multi_add_handlefails.
- Fixed bug GH-16302:
-
Date
- Fixed bug GH-16454: Unhandled INF in
date_sunset()with tiny$utcOffset. - Fixed bug GH-16037: Assertion failure in ext/date/php_date.c.
- Fixed bug GH-14732:
date_sun_info()fails for non-finite values.
- Fixed bug GH-16454: Unhandled INF in
-
DBA
- Fixed bug GH-16390:
dba_open()can segfault for "pathless" streams.
- Fixed bug GH-16390:
-
DOM
- Fixed bug GH-16316:
DOMXPathbreaks when not initialized properly. - Fixed bug GH-16473:
dom_import_simplexmlstub is wrong. - Fixed bug GH-16533: Segfault when adding attribute to parent that is not an element.
- Fixed bug GH-16535: UAF when using document as a child.
- Fixed bug GH-16593: Assertion failure in
DOM->replaceChild. - Fixed bug GH-16595: Another UAF in
DOM -> cloneNode.
- Fixed bug GH-16316:
-
EXIF
- Fixed bug GH-16409: Segfault in
exif_thumbnailwhen not dealing with a real file.
- Fixed bug GH-16409: Segfault in
-
FFI
- Fixed bug GH-16397: Segmentation fault when comparing
FFIobject.
- Fixed bug GH-16397: Segmentation fault when comparing
-
Filter
- Fixed bug GH-16523:
FILTER_FLAG_HOSTNAMEaccepts ending hyphen.
- Fixed bug GH-16523:
-
FPM
- Fixed bug GH-16628:
FPMlogs are getting corrupted with this log statement.
- Fixed bug GH-16628:
-
GD
- Fixed bug GH-16334:
imageaffineoverflow on matrix elements. - Fixed bug GH-16427: Unchecked
libavifreturn values. - Fixed bug GH-16559: UBSan abort in
ext/gd/libgd/gd_interpolation.c:1007.
- Fixed bug GH-16334:
-
GMP
- Fixed floating point exception bug with
gmp_powwhen using large exposant values. - Fixed bug GH-16411:
gmp_export()can cause overflow. - Fixed bug GH-16501:
gmp_random_bits()can cause overflow. - Fixed
gmp_pow()overflow bug with large base/exponents. - Fixed segfaults and other issues related to operator overloading with
GMPobjects.
- Fixed floating point exception bug with
-
MBstring
- Fixed bug GH-16361:
mb_substroverflow on start/length arguments.
- Fixed bug GH-16361:
-
OpenSSL
- Fixed bug GH-16357:
opensslmay modify member types of certificate arrays. - Fixed bug GH-16433: Large values for
openssl_csr_sign()$daysoverflow. - Fix various memory leaks on error conditions in
openssl_x509_parse().
- Fixed bug GH-16357:
-
PDO ODBC
- Fixed bug GH-16450:
PDO_ODBCcan inject garbage into field values.
- Fixed bug GH-16450:
-
Phar
- Fixed bug GH-16406: Assertion failure in
ext/phar/phar.c:2808.
- Fixed bug GH-16406: Assertion failure in
-
PHPDBG
- Fixed bug GH-16174: Empty string is an invalid expression for
ev.
- Fixed bug GH-16174: Empty string is an invalid expression for
-
Reflection
- Fixed bug GH-16601: Memory leak in Reflection constructors.
-
Session
- Fixed bug GH-16385: Unexpected null returned by
session_set_cookie_params. - Fixed bug GH-16290: Overflow on
cookie_lifetimeini value.
- Fixed bug GH-16385: Unexpected null returned by
-
SOAP
- Fixed bug GH-16429: Segmentation fault access null pointer in
SoapClient.
- Fixed bug GH-16429: Segmentation fault access null pointer in
-
Sockets
- Fixed bug with overflow
socket_recvfrom$lengthargument.
- Fixed bug with overflow
-
SPL
- Fixed bug GH-16337: Use-after-free in
SplHeap. - Fixed bug GH-16464: Use-after-free in
SplDoublyLinkedList::offsetSet(). - Fixed bug GH-16479: Use-after-free in
SplObjectStorage::setInfo(). - Fixed bug GH-16478: Use-after-free in
SplFixedArray::unset(). - Fixed bug GH-16588: UAF in
Observer->serialize. - Fix GH-16477: Segmentation fault when calling
__debugInfo()after failedSplFileObject::__constructor. - Fixed bug GH-16589: UAF in
SplDoublyLinked->serialize(). - Fixed bug GH-14687: Segfault on
SplObjectIteratorinstance. - Fixed bug GH-16604: Memory leaks in SPL constructors.
- Fixed bug GH-16646: UAF in
ArrayObject::unset()andArrayObject::exchangeArray().
- Fixed bug GH-16337: Use-after-free in
-
Standard
- Fixed bug GH-16293: Failed assertion when throwing in
assert()callback with bail enabled.
- Fixed bug GH-16293: Failed assertion when throwing in
-
SysVMsg
- Fixed bug GH-16592:
msg_send()crashes when a type does not properly serialize.
- Fixed bug GH-16592:
-
SysVShm
- Fixed bug GH-16591: Assertion error in
shm_put_var.
- Fixed bug GH-16591: Assertion error in
-
XMLReader
- Fixed bug GH-16292: Segmentation fault in
ext/xmlreader/php_xmlreader.c.
- Fixed bug GH-16292: Segmentation fault in
-
Zlib
- Fixed bug GH-16326: Memory management is broken for bad dictionaries.
PHP version 8.1.31 fixes
-
CLI
- Fixed bug GHSA-4w77-75f9-2c8w: Heap-Use-After-Free in
sapi_read_post_dataProcessing in CLI SAPI Interface.
- Fixed bug GHSA-4w77-75f9-2c8w: Heap-Use-After-Free in