PHP 8.4.14: Downloads, Changelog, News

Release Information

Release
8.4.14
PHP Version
PHP 8.4
Release Date
Release Type
Bug Fix Release
Release Status
Latest
Branch Status
Supported (Latest)

Latest PHP release in the latest version.
PHP 8.4 continues to receive bug fixes and security fixes until 2026-12-31.

Downloads

Source Code

Git Clone
Use Git to clone the 8.4.14 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.14
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (./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

Non-Thread Safe Builds
Non-Thread Safe (NTS) builds are single-threaded PHP builds. They can be used on web servers that integrate PHP over FastCGI protocol, such as Nginx, Caddy, and IIS.
Thread-Safe Builds
Thread-Safe (TS) builds are multi-thread PHP builds, often used to integrate PHP as a Server API for multithreaded servers. The most common use case is using PHP as an Apache module.

Docker/Podman Containers

PHP CLI
PHP CLI Containers images only include the PHP CLI, and no FPM or Apache modules. The Alpine builds are lightweight, but may introduce incompatibilities due to their musl builds. Albeit their larger size, the Debian-based (without the "-alpine" suffix) images are more complete, and widely used.

Alpine-based: Lightweight, but may introduce incompatibilities due to their musl builds.
docker pull php:8.4.14-cli-alpine

Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.4.14-cli
PHP CLI + Web Server Integration
These container images include PHP CLI, and a web server integration. FPM container images can be integrated with web servers such as Nginx, Caddy, and Apache with Event MPM. The Apache container images include Apache web server, integrating PHP as an Apache module.

Alpine-based: Lightweight, but may introduce incompatibilities due to their musl builds.
docker pull php:8.4.14-fpm-alpine

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.14-apache

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.4.14-fpm

ChangeLog

Core

  • Fixed bug GH-19765 (object_properties_load() bypasses readonly property checks).
  • Fixed hard_timeout with --enable-zend-max-execution-timers.
  • Fixed bug GH-19792 (SCCP causes UAF for return value if both warning and exception are triggered).
  • Fixed bug GH-19653 (Closure named argument unpacking between temporary closures can cause a crash).
  • Fixed bug GH-19839 (Incorrect HASH_FLAG_HAS_EMPTY_IND flag on userland array).
  • Fixed bug GH-19480 (error_log php.ini cannot be unset when open_basedir is configured).
  • Fixed bug GH-20002 (Broken build on *BSD with MSAN).

CLI

  • Fix useless "Failed to poll event" error logs due to EAGAIN in CLI server with PHP_CLI_SERVER_WORKERS.

Curl

  • Fix cloning of CURLOPT_POSTFIELDS when using the clone operator instead of the curl_copy_handle() function to clone a CurlHandle.
  • Fix curl build and test failures with version 8.16.

Date

  • Fixed GH-17159: "P" format for ::createFromFormat swallows string literals.

DOM

  • Fix macro name clash on macOS.
  • Fixed bug GH-20022 (docker-php-ext-install DOM failed).

GD

  • Fixed GH-19955 (imagefttext() memory leak).

MySQLnd

  • Fixed bug #67563 (mysqli compiled with mysqlnd does not take ipv6 adress as parameter).

Opcache

  • Fixed bug GH-19669 (assertion failure in zend_jit_trace_type_to_info_ex).
  • Fixed bug GH-19831 (function JIT may not deref property value).
  • Fixed bug GH-19889 (race condition in zend_runtime_jit(), zend_jit_hot_func()).

Phar

  • Fix memory leak and invalid continuation after tar header writing fails.
  • Fix memory leaks when creating temp file fails when applying zip signature.

SimpleXML

  • Fixed bug GH-19988 (zend_string_init with NULL pointer in simplexml (UB)).

Soap

  • Fixed bug GH-19784 (SoapServer memory leak).
  • Fixed bug GH-20011 (Array of SoapVar of unknown type causes crash).

Standard

  • Fixed bug GH-12265 (Cloning an object breaks serialization recursion).
  • Fixed bug GH-19701 (Serialize/deserialize loses some data).
  • Fixed bug GH-19801 (leaks in var_dump() and debug_zval_dump()).
  • Fixed bug GH-20043 (array_unique assertion failure with RC1 array causing an exception on sort).
  • Fixed bug GH-19926 (reset internal pointer earlier while splicing array while COW violation flag is still set).
  • Fixed bug GH-19570 (unable to fseek in /dev/zero and /dev/null).

Streams

  • Fixed bug GH-19248 (Use strerror_r instead of strerror in main).
  • Fixed bug GH-17345 (Bug GH-35916 was not completely fixed).
  • Fixed bug GH-19705 (segmentation when attempting to flush on non seekable stream. (bukka/David Carlier)

XMLReader

  • Fixed bug GH-20009 (XMLReader leak on RelaxNG schema failure).

Zip

  • Fixed bug GH-19688 (Remove pattern overflow in zip addGlob()).
  • Fixed bug GH-19932 (Memory leak in zip setEncryptionName()/setEncryptionIndex()).

Commit List

Alexandre Daubois

  • Fix GH-19801: address leak when calling var_dump() with recursion in __debugInfo() in GH-19837
  • Fix GH-16319: protect fiber backtrace with null filename from crashing in GH-19973
  • Fix GH-19926: reset internal pointer earlier while splicing array while COW violation flag is still set in GH-19929

Appla

  • Fix hard_timeout when zend-max-execution-timers is enabled in ed9430a5d1

Arnaud Le Blanc

  • Fix deoptimization after exit during inc/dec in 4e0e88a140
  • Handle references after FETCH_OBJ_R with REG destination in 32c919b474
  • Add Alpine push job in GH-20038
  • Fix race condition in zend_runtime_jit(), zend_jit_hot_func() in 359ad80c4a
  • Upgrade Alpine in nightly job in 66708de841
  • Upgrade Alpine in push job in 93104e5c59

David Carlier

Derick Rethans

Dmitry Stogov

George Wang

Guillaume Outters

  • Fix broken build on *BSD with MSAN in 26ca363a13

Ilija Tovilo

  • Fix incorrect HASH_FLAG_HAS_EMPTY_IND flag on userland array in f045716288
  • Fix use-of-uninitialized-value in zend_get_arg_offset_by_name() in 6eb3faef3b
  • Fix curl 8.16.0 compilation with zts in 266cb7d892
  • Fix more curl 8.16 issues in a885372a08
  • Automatically skip tty tests if not on tty in 831597748b
  • Skip mysqli_fetch_all_data_types_variation.phpt on PPC runner in 0e1addf8b5
  • Fix curl 8.16.0 compilation with zts in da75e41a6f
  • Fix more curl 8.16 issues in b810a23587

Jakub Zelenka

  • Revert "fix pipe detection for STDERR." in c0f8bb6622
  • Add stream filter convert.* tests in GH-19976
  • Fix GH-19248: Use strerror_r instead of strerror in main in b7fdfb7147
  • Do not use errno_t as it is not defined on musl in GH-20037
  • Prevent use after stack scope in stream strerr code in GH-20040
  • Fix curl_setopt_ssl test for curl 8.16 in 36859ad977
  • Update NEWS with info about curl 8.16 compat fixes in 742b7d8e55
  • Update NEWS entry for curl 8.16 update in 78a24ffc03

Leo Gaskin

  • Treat accept failing with SOCK_EAGAIN as success in CLI web server in 7e7d6d6380

Niels Dossche

Remi Collet

Ruoyu Zhong

  • Fix naming clash with libxml macro in 8774e96bd4

Saki Takamachi

Shivam Mathur

Tim Düsterhus

  • zend_API: Do not overwrite readonly properties in object_properties_load() in GH-19767
  • curl: Fix cloning of POST fields in GH-19813
  • CI: Do not save ccache for PRs for LINUX_X32 in db65d22ce2
  • gdbinit: Fix printing of variable names in print_cvs in GH-20077
  • Regenerate main/debug_gdb_scripts.c in 08924cd8c4
Subscribe to PHP.Watch newsletter for monthly updates

You will receive an email on last Wednesday of every month and on major PHP releases with new articles related to PHP, upcoming changes, new features and what's changing in the language. No marketing emails, no selling of your contacts, no click-tracking, and one-click instant unsubscribe from any email you receive.