PHP 8.4.1 is an old release of PHP 8.4 series. Using the latest version PHP 8.4.3 is highly recommended.
PHP 8.4 continues to receive bug fixes and security fixes until 2026-12-31.
Downloads
Source Code
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.1
./buildconf
), configuring the build ./configure
, and running make
.Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.
Windows binaries
Docker/Podman Containers
docker pull php:8.4.1-cli-alpine
docker pull php:8.4.1-cli
docker pull php:8.4.1-fpm-alpine
docker pull php:8.4.1-apache
docker pull php:8.4.1-fpm
ChangeLog
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
andPHP_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-re
2c-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_<header>_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 GH-16574 (Incorrect error "undefined method" messages).
- Fixed bug GH-16577 (EG(strtod_state).freelist leaks with opcache.preload).
- Fixed bug GH-16615 (Assertion failure in
zend_std_read_property
). - Fixed bug GH-16342 (Added
ReflectionProperty::isLazy()
). - Fixed bug GH-16725 (Incorrect access check for non-hooked props in hooked object iterator).
Curl
- Deprecated the CURLOPT_BINARYTRANSFER constant.
- Bumped required libcurl version to 7.61.0.
- Added feature_list key to the
curl_version()
return value. - Added constants CURL_HTTP_VERSION_3 (libcurl 7.66) and CURL_HTTP_VERSION_3ONLY (libcurl 7.88) as options for CURLOPT_HTTP_VERSION
- Added CURLOPT_TCP_KEEPCNT to set the number of probes to send before dropping the connection.
- Added CURLOPT_PREREQFUNCTION Curl 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 as CURLOPT_FTP_RESPONSE_TIMEOUT.
- The CURLOPT_DNS_USE_GLOBAL_CACHE option is now silently ignored.
- Added CURLOPT_DEBUGFUNCTION as a Curl option.
- Fixed bug GH-16359 (crash with curl_setopt* CURLOPT_WRITEFUNCTION without null callback).
- Fixed bug GH-16723 (CURLMOPT_PUSHFUNCTION issues).
Date
- Added DateTime[Immutable]::createFromTimestamp.
- Added DateTime[Immutable]::[get|set]Microsecond.
- Constants SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING, and SUNFUNCS_RET_DOUBLE are now deprecated.
- Fixed bug GH-13773 (DatePeriod not taking into account microseconds for end date).
DBA
- Passing null or false to
dba_key_split()
is deprecated.
Debugging
- Fixed bug GH-15923 (GDB: Python Exception <class 'TypeError'>: exceptions must derive from BaseException).
DOM
- Added
DOMNode::compareDocumentPosition()
. - Implement #53655 (Improve speed of DOMNode::C14N() on large XML documents).
- Fix cloning attribute with namespace disappearing namespace.
- Implement DOM HTML5 parsing and serialization RFC.
- Fix DOMElement->prefix with empty string creates bogus prefix.
- Handle OOM more consistently.
- Implemented "Improve callbacks in
ext/dom
andext/xsl
" RFC. - Added
DOMXPath::quote()
static method. - Implemented opt-in
ext/dom
spec compliance RFC. - Fixed bug #79701 (getElementById does not correctly work with duplicate definitions).
- Implemented "New ext-dom features in PHP 8.4" RFC.
- Fixed GH-14698 (segfault on DOM node dereference).
- Improve support for template elements.
- Fix trampoline leak in xpath callables.
- Throw instead of silently failing when creating a too long text node in (DOM)ParentNode and (DOM)ChildNode.
- Fixed bug GH-15192 (Segmentation fault in dom extension (html5_serializer)).
- Deprecated DOM_PHP_ERR constant.
- Removed
DOMImplementation::getFeature()
. - Fixed bug GH-15331 (Element::$substitutedNodeValue test failed).
- Fixed bug GH-15570 (Segmentation fault (access null pointer) in ext/dom/html5_serializer.c).
- Fixed bug GH-13988 (Storing DOMElement consume 4 times more memory in PHP 8.1 than in PHP 8.0).
- Fix XML serializer errata: xmlns="" serialization should be allowed.
- Fixed bug GH-15910 (Assertion failure in ext/dom/element.c).
- Fix unsetting DOM properties.
- Fixed bug GH-16190 (Using reflection to call Dom\Node::__construct causes assertion failure).
- Fix edge-case in DOM parsing decoding.
- Fixed bug GH-16465 (Heap buffer overflow in DOMNode->getElementByTagName).
- Fixed bug GH-16594 (Assertion failure in DOM -> before).
Fileinfo
- Update to libmagic 5.45.
- Fixed bug #65106 (PHP fails to compile
ext/fileinfo
).
FPM
- Implement GH-12385 (flush headers without body when calling
flush()
). - Added DragonFlyBSD system to the list which set FPM_BACKLOG_DEFAULT to SOMAXCONN.
- /dev/poll events.mechanism for Solaris/Illumos setting had been retired.
- Added memory peak to the scoreboard / status page.
FTP
- Removed the deprecated inet_ntoa call support.
- Fixed bug #63937 (Upload speed 10 times slower with PHP).
GD
- Fix parameter numbers and missing alpha check for imagecolorset().
- imagepng/imagejpeg/imagewep/imageavif now throw an exception on invalid quality parameter.
- Check overflow/underflow for imagescale/imagefilter.
- Added gdImageClone to bundled libgd.
Gettext
- bind_textdomain_codeset, textdomain and d(*)gettext functions now throw an exception on empty domain.
GMP
- The GMP class is now final and cannot be extended anymore.
- RFC: Change GMP bool cast behavior.
Hash
- Changed return type of
hash_update()
to true. - Added HashContext::__debugInfo().
- Deprecated passing incorrect data types for options to
ext/hash
functions. - Added SSE2 and SHA-NI implementation of SHA-256.
- Fix GH-15384 (Build fails on Alpine / Musl for amd64).
- Fixed bug GH-15742 (
php_hash_sha.h
incompatible with C++).
IMAP
- Moved to PECL.
Intl
- Added
IntlDateFormatter::PATTERN
constant. - Fixed Numberformatter::__construct when the locale is invalid, now throws an exception.
- Added
NumberFormatter::ROUND_TOWARD_ZERO
and ::ROUND_AWAY_FROM_ZERO as aliases for ::ROUND_DOWN and ::ROUND_UP. - Added
NumberFormatter::ROUND_HALFODD
. - Added PROPERTY_IDS_UNARY_OPERATOR, PROPERTY_ID_COMPAT_MATH_START and PROPERTY_ID_COMPAT_MATH_CONTINUE constants.
- Added IntlDateFormatter::getIanaID/intltz_get_iana_id method/function.
- Set to C++17 standard for icu 74 and onwards.
resourcebundle_get()
,ResourceBundle::get()
, and accessing offsets on a ResourceBundle object now throw: - TypeError for invalid offset types - ValueError for an empty string - ValueError if the integer index does not fit in a signed 32 bit integerResourceBundle::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::setAllowedChars
to set unicode chars ranges.
LDAP
- Added LDAP_OPT_X_TLS_PROTOCOL_MAX/LDAP_OPT_X_TLS_PROTOCOL_TLS1_3 constants.
LibXML
- Added LIBXML_RECOVER constant.
libxml_set_streams_context()
now throws immediately on an invalid context instead of at the use-site.- Added LIBXML_NO_XXE constant.
MBString
- Added
mb_trim
,mb_ltrim
andmb_rtrim
. - Added
mb_ucfirst
andmb_lcfirst
. - Updated Unicode data tables to Unicode 15.1.
- Fixed bug GH-15824 (
mb_detect_encoding()
: Argument $encodings contains invalid encoding "UTF8"). - Updated Unicode data tables to Unicode 16.0.
Mysqli
- The
mysqli_ping()
function and mysqli::ping()
method are now deprecated, as the reconnect feature was removed in PHP 8.2. - The
mysqli_kill()
function and mysqli::kill()
method are now deprecated. If this functionality is needed a SQL "KILL" command can be used instead. - The
mysqli_refresh()
function and mysqli::refresh()
method are now deprecated. If this functionality is needed a SQL "FLUSH" command can be used instead. - Passing explicitly the $mode parameter to
mysqli_store_result()
has been deprecated. As the MYSQLI_STORE_RESULT_COPY_DATA constant was only used in conjunction with this function it has also been deprecated.
MySQLnd
- Fixed bug GH-13440 (PDO quote bottleneck).
- Fixed bug GH-10599 (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_buffer to 32767 on 64bit archs.
- Fixed bug GH-13834 (Applying non-zero offset 36 to null pointer in
zend_jit.c
). - Fixed bug GH-14361 (Deep recursion in
zend_cfg.c
causes segfault). - Fixed bug GH-14873 (PHP 8.4 min function fails on typed integer).
- Fixed bug GH-15490 (Building of callgraph modifies preloaded symbols).
- Fixed bug GH-15178 (Assertion in tracing JIT on hooks).
- Fixed bug GH-15657 (Segmentation fault in
dasm_x86.h
). - Added
opcache_jit_blacklist()
function. - Fixed bug GH-16009 (Segmentation fault with frameless functions and undefined CVs).
- Fixed bug GH-16186 (Assertion failure in Zend/zend_operators.c).
- Fixed bug GH-16572 (Incorrect result with reflection in low-trigger JIT).
- Fixed GH-16839 (Error on building Opcache JIT for Windows ARM64).
OpenSSL
- Fixed bug #80269 (OpenSSL sets Subject wrong with extraattribs parameter).
- Implement request #48520 (openssl_csr_new - allow multiple values in DN).
- Introduced new serial_hex parameter to openssl_csr_sign.
- Added X509_PURPOSE_OCSP_HELPER and X509_PURPOSE_TIMESTAMP_SIGN constants.
- Bumped minimum required OpenSSL version to 1.1.1.
- Added compile-time option
--with-openssl-legacy-provider
to enable legacy provider. - Added support for Curve25519 + Curve448 based keys.
- Fixed bug GH-13343 (openssl_x509_parse should not allow omitted seconds in UTCTimes).
- Bumped minimum required OpenSSL version to 1.1.0.
- Implement GH-13514 PASSWORD_ARGON2 from OpenSSL 3.2.
Output
- Clear output handler status flags during handler initialization.
- Fixed bug with
url_rewriter.h
osts not used byoutput_add_rewrite_var()
.
PCNTL
- Added pcntl_setns for Linux.
- Added pcntl_getcpuaffinity/pcntl_setcpuaffinity.
- Updated pcntl_get_signal_handler signal id upper limit to be more in line with platforms limits.
- Added pcntl_getcpu for Linux/FreeBSD/Solaris/Illumos.
- Added pcntl_getqos_class/pcntl_setqos_class for macOs.
- Added SIGCKPT/SIGCKPTEXIT constants for DragonFlyBSD.
- Added FreeBSD's SIGTRAP handling to pcntl_siginfo_to_zval.
- Added POSIX pcntl_waitid.
- Fixed bug GH-16769: (pcntl_sigwaitinfo aborts on signal value as reference).
PCRE
- Upgrade bundled pcre2lib to version 10.43.
- Add "/r" modifier.
- Upgrade bundled pcre2lib to version 10.44.
- Fixed GH-16189 (underflow on offset argument).
- Fix UAF issues with PCRE after request shutdown.
PDO
- Fixed setAttribute and getAttribute.
- Implemented PDO driver-specific subclasses RFC.
- Added support for PDO driver-specific SQL parsers.
- Fixed bug GH-14792 (Compilation failure on pdo_* extensions).
- mysqlnd: support ER_CLIENT_INTERACTION_TIMEOUT.
- The internal header
php_pdo_int.h
is no longer installed; it is not supposed to be used by PDO drivers. - Fixed bug GH-16167 (Prevent mixing PDO sub-classes with different DSN).
- Fixed bug GH-16314 ("Pdo\Mysql object is uninitialized" when opening a persistent connection).
PDO_DBLIB
- Fixed setAttribute and getAttribute.
- Added class Pdo\DbLib.
PDO_Firebird
- Fixed setAttribute and getAttribute.
- Feature: Add transaction isolation level and mode settings to pdo_firebird.
- Added class Pdo\Firebird.
- Added Pdo`Firebird::ATTR_API_VERSION`.
- Added getApiVersion() and removed from getAttribute().
- Supported Firebird 4.0 datatypes.
- Support proper formatting of time zone types.
- Fixed GH-15604 (Always make input parameters nullable).
PDO_MYSQL
- Fixed setAttribute and getAttribute.
- Added class Pdo\Mysql.
- Added custom SQL parser.
- Fixed GH-15949 (PDO_MySQL not properly quoting PDO_PARAM_LOB binary data).
PDO_ODBC
- Added class Pdo\Odbc.
PDO_PGSQL
- Fixed GH-12423, DSN credentials being prioritized over the user/password PDO constructor arguments.
- Fixed native float support with pdo_pgsql query results.
- Added class Pdo\Pgsql.
- Retrieve the memory usage of the query result resource.
- Added Pdo`Pgsql::setNoticeCallBack` method to receive DB notices.
- Added custom SQL parser.
- Fixed GH-15986 (Double-free due to Pdo`Pgsql::setNoticeCallback()`).
- Fixed GH-12940 (Using PQclosePrepared when available instead of the DEALLOCATE command to free statements resources).
- Remove PGSQL_ATTR_RESULT_MEMORY_SIZE constant as it is provided by the new PDO Subclass as Pdo`Pgsql::ATTR_RESULT_MEMORY_SIZE`.
PDO_SQLITE
- Added class Pdo\Sqlite.
- Fixed bug #81227 (
PDO::inTransaction
reports false when in transaction). - Added custom SQL parser.
PHPDBG
- array out of bounds, stack overflow handled for segfault handler on windows.
- Fixed bug GH-16041 (Support stack limit in phpdbg).
PGSQL
- Added the possibility to have no conditions for pg_select.
- Persistent connections support the PGSQL_CONNECT_FORCE_RENEW flag.
- Added pg_result_memory_size to get the query result memory usage.
- Added pg_change_password to alter an user's password.
- Added pg_put_copy_data/pg_put_copy_end to send COPY commands and signal the end of the COPY.
- Added pg_socket_poll to poll on the connection.
- Added pg_jit to get infos on server JIT support.
- Added pg_set_chunked_rows_size to fetch results per chunk.
- pg_convert/pg_insert/pg_update/pg_delete ; regexes are now cached.
Phar
- Fixed bug GH-12532 (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 GH-15094 (
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 GH-12908 (Show attribute name/class in ReflectionAttribute dump).
- Make
ReflectionGenerator::getFunction()
legal after generator termination. - Added
ReflectionGenerator::isClosed()
. - Fixed bug GH-15718 (Segfault on
ReflectionProperty::get
{Hook,Hooks}() on dynamic properties). - Fixed bug GH-15694 (
ReflectionProperty::isInitialized()
is incorrect for hooked properties). - Add missing
ReflectionProperty::hasHook
[s]() methods. - Add missing
ReflectionProperty::isFinal()
method. - Fixed bug GH-16122 (The return value of
ReflectionFunction::getNamespaceName()
andReflectionFunction::inNamespace()
for closures is incorrect). - Fixed bug GH-16162 (No
ReflectionProperty::IS_VIRTUAL
) - Fixed the name of the second parameter of
ReflectionClass::resetAsLazyGhost()
.
Session
- INI settings session.sid_length and session.sid_bits_per_character are now deprecated.
- Emit warnings for non-positive values of session.gc_divisor and negative values of session.gc_probability.
- Fixed bug GH-16590 (UAF in
session_encode()
).
SimpleXML
- Fix signature of
simplexml_import_dom()
.
SNMP
- Removed the deprecated inet_ntoa call support.
SOAP
- Add support for clark notation for namespaces in class map.
- Mitigate #51561 (SoapServer with a extented class and using sessions, lost the setPersistence()).
- Fixed bug #49278 (SoapClient::__getLastResponseHeaders returns NULL if wsdl operation !has output).
- Fixed bug #44383 (PHP DateTime not converted to xsd:datetime).
- Fixed bug GH-11941 (soap with session persistence will silently fail when "session" 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_ALL constant 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_ntoa call support.
- Added the SO_EXECLUSIVEADDRUSE windows constant.
- Added the SOCK_CONN_DGRAM/SOCK_DCCP netbsd constants.
- Added multicast group support for ipv4 on FreeBSD. (jonathan@
tangential.c
a) - Added the TCP_SYNCNT constant for Linux to set number of attempts to send SYN packets from the client.
- Added the SO_EXCLBIND constant for exclusive socket binding on illumos/solaris.
- Updated the socket_create_listen backlog argument default value to SOMAXCONN.
- Added the SO_NOSIGPIPE constant to control the generation of SIGPIPE for macOs and FreeBSD.
- Added SO_LINGER_SEC for macOs, true equivalent of SO_LINGER in other platforms.
- Add close-on-exec on socket created with socket_accept on unixes.
- Added IP_PORTRANGE* constants for BSD systems to control ephemeral port ranges.
- Added SOCK_NONBLOCK/SOCK_CLOEXEC constants for socket_create and socket_create_pair to apply O_NONBLOCK/O_CLOEXEC flags to the newly created sockets.
- Added SO_BINDTOIFINDEX to bind a socket to an interface index.
Sodium
- Add support for AEGIS-128L and AEGIS-256.
- Enable AES-GCM on aarch64 with the ARM crypto extensions.
SPL
- Implement SeekableIterator for SplObjectStorage.
- The SplFixedArray::wakeup() method has been deprecated as it implements serialize() and __unserialize() which need to be overwritten instead.
- Passing a non-empty string for the $escape parameter of: -
SplFileObject::setCsvControl()
-SplFileObject::fputcsv()
-SplFileObject::fgetcsv()
is now deprecated.
Standard
- Implement GH-12188 (Indication for the int size in
phpinfo()
). - Partly fix GH-12143 (Incorrect
round()
result for 0.49999999). - Fix GH-12252 (
round()
: Validate the rounding mode). - Increase the default BCrypt cost to 12.
- Fixed bug GH-12592 (
strcspn()
odd behaviour with NUL bytes and empty mask). - Removed the deprecated inet_ntoa call support.
- Cast large floats that are within int range to int in number_format so 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 GH-12143 (Optimize round).
- Changed return type of long2ip to string from string|false.
- Fix GH-12143 (Extend the maximum precision round can 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_header variable. - Add
php_base64_encode_ex()
API. - Implemented "Raising zero to the power of negative number" RFC.
- Added
array_find()
,array_find_key()
,array_all()
, andarray_any()
. - Change
highlight_string()
andprint_r()
return type to string|true. - Fix references in
request_parse_body()
options array. - Add RoundingMode enum.
- Unserializing the uppercase 'S' tag is now deprecated.
- Enables crc32 auxiliary detection on OpenBSD.
- Passing a non-empty string for the $escape parameter of: -
fputcsv()
-fgetcsv()
-str_getcsv()
is now deprecated. - The
str_getcsv()
function now throws ValueErrors when the $separator and $enclosure arguments are not one byte long, or if the $escape is not one byte long or the empty string. This aligns the behaviour to be identical to that offputcsv()
and fgetcsv(). php_uname()
now throws ValueErrors on invalid inputs.- The "allowed_classes" option for
unserialize()
now throws TypeErrors and ValueErrors if it is not an array of class names. - Implemented GH-15685 (improve
proc_open
error reporting on Windows). - Add support for backed enums in
http_build_query()
. - Fixed bug GH-15982 (Assertion failure with
array_find
when references are involved). - Fixed parameter names of
fpow()
to be identical to pow().
Streams
- Implemented GH-15155 (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() and tidyNode::getPreviousSibling().
Windows
- Update the icon of the Windows executables, e.g. php.exe.
- Fixed bug GH-16199 (GREP_HEADER() is broken).
XML
- Added XML_OPTION_PARSE_HUGE parser option.
- Fixed bug #81481 (
xml_get_current_byte_index
limited to 32-bit numbers on 64-bit builds). - The
xml_set_object()
function has been deprecated. - Passing non-callable strings to the
xml_set_
*_handler()
functions is now deprecated.
XMLReader
- Declares class constant types.
- Add
XMLReader::fromStream()
,XMLReader::fromUri()
,XMLReader::fromString()
. - Fixed bug GH-15123 (var_dump doesn't actually work on XMLReader).
XMLWriter
- Add
XMLWriter::toStream()
,XMLWriter::toUri()
,XMLWriter::toMemory()
.
XSL
- Implement request #64137 (
XSLTProcessor::setParameter()
should allow both quotes to be used). - Implemented "Improve callbacks in
ext/dom
andext/xsl
" RFC. - Added XSLTProcessor::$maxTemplateDepth and XSLTProcessor::$maxTemplateVars.
- Fix trampoline leak in xpath callables.
Zip
- Added
ZipArchive::ER_TRUNCATED_ZIP
added in libzip 1.11.
Commit List
Dmitry Stogov
- Use the immutable twin of temporary op_array in GH-16861
Jakub Zelenka
- Fix GHSA-c5f2-jwm7-mmq2: stream HTTP fulluri CRLF injection in 62e23cb858
- Fix GHSA-h35g-vwh6-m678: Mysqlnd - various heap buffer over-reads in 07395e5f60
- Make MySQLnd protocol stmt test work on 32bit in 48b9bcdbe3
- Fix MySQLnd possible buffer over read in auth_protocol in fd4d65b3ca
Niels Dossche
- Fix GHSA-5hqh-c84r-qjcv: Integer overflow in the dblib quoter causing OOB writes in ed01e51276
- Fix GHSA-5hqh-c84r-qjcv: Integer overflow in the firebird quoter causing OOB writes in b256b6555a
- Fix GHSA-g665-fm4p-vhff: OOB access in
ldap_escape
in 8e942bbdae - Fix GHSA-r977-prxv-hc43 in 40bd1822a3
- Fix GHSA-4w77-75f9-2c8w in 9e9319c4f0
Saki Takamachi
- Update versions for PHP 8.4.1 in 0454901ed1