PHP 7.4.0RC2: Downloads, Changelog, News

Release Information

PHP Version
PHP 7.4
Release Date
Release Type
Bug Fix Release
Release Status
EOL, Use PHP 7.4.33
Branch Status

PHP 7.4 reached EOL on , and all releases of this version no longer receive security or bug fixes. Using PHP 7.4.0RC2 is not recommended. PHP 7.4.33 is the latest version in the series.


Source Code

Git Clone
Use Git to clone the 7.4.0RC2 tag from the PHP Git repository.
git clone --depth 1 --branch php-7.4.0RC2
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 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:7.4.0RC2-cli-alpine

Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:7.4.0RC2-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:7.4.0RC2-fpm-alpine

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

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

Commit List


Christoph M. Becker

CHU Zhaowei

  • Fix bug #72884 isCloneable() on SplFileObject should return false in 1ac6b0251b

David Carlier

  • Fix tautological compare warning in 711bd0a0fc
  • Monitoring anonymous pages on mac via vmmap tag in ce25fa0d24

Derick Rethans

Dmitry Stogov

  • Execute preload script under user defined by opcache.preload_user directive in 5dc37cc306
  • Fixed bug #78488 (OOB in ZEND_FUNCTION(ffi_trampoline)) in 1db0bad6a7
  • Remove HOT attribute from some VM handlers. Comparisons almost always followed by JMPZ/JMPNZ; JMPZNZ is rare used in 7237da27fe
  • Microoptimization (avoid code duplication) in 25d97f5eee
  • Revert "Microoptimization (avoid code duplication)" in 4ecdff2da8
  • Link executable files using non PIC object files. This reduces PIC overhead and improves performance in eef85229d0
  • Stop after exceptions in ea92b9b655
  • NEWS entry, test and minor cleanup for FFI::isNull() in 21c3cdf668
  • Fixed bad format string in 5f555fb19e
  • Eliminate checks using ZEND_CONST_COND() macro in 697266a84e
  • Load string once in 5a616191f3
  • Fixed bug #78531 (Crash when using undefined variable as object in 51d9f32dbe
  • Fixed incorrect usage of QM_ASSIGN instruction in e45a757bc2
  • Make constant and copy propagation only for IS_TMP_VAR operands in af9b127fed
  • Fixed typos in 6417c507ce
  • Fixed CLI/CGI/FPM build, when they are built together with Apache SAPI in db094b4b2e


  • Add tilde to allowed status/ping path in 252ebce0d7

Fabien Villepinte


Kalle Sommer Nielsen

Nicolas Grekas

Nikita Popov

  • Clarify failure behavior of spl_iterator_apply() in 5acedabfc0
  • Add zpp check to spl_classes() in c0e9b1532e
  • Use unsigned subtraction in php_random_int() in 265af40a0a
  • Avoid pointer UB in strip_header in 518c651c66
  • Report false for inherited private methods in method_exists() in 6255308624
  • Fix handling of abstract/deprecated exception in 4bb7282742
  • Improve exception handling for abstract/deprecated calls in b6f76aca54
  • Remove --with-zlib-dir option from mysqlnd config in a2c21e10b2
  • Fix pipe detection and stream position handling in 9ec61e43d4
  • Fixed bug #78502 in e81751ceac
  • Fix detection of gmp on clang in 34f4ad61dc
  • Remove nsldap support in 025ff3b5a3
  • Remove support for umich_ldap in 148ee16ff3
  • Remove defines for specific oraldap versions in 768c93ed13
  • Fix reporting of redirect test failures in junit in 279f745a60
  • Fix double free of DSN credentials in 645b0372e3
  • Fix PDO pgsql memory leak with scrollable cursors in 66caca53ce
  • Fixed bug #78514 in 36a8cf5182
  • Fix typo in 7807319b7c
  • Clarify that our usage of gettimeofday() is infallible in 974e77b345
  • Preloading: Fix handling of static vars in inherited methods in 0a24cd4e7c
  • Fixed bug #78506 in 11f3e24190
  • Fix another pointer indexing UB in http_fopen_wrapper in 1ce830a4aa
  • Free history_get_history_state() result in f945c82ec6
  • Specify -fsanitize-no-recover in b7c353c8d0
  • Only allow "nearly linked" classes for parent/interface in 270e5e3c5b
  • Fix typo in unlinked_instanceof assertion in fbe287a677
  • Improve "already declared" error message in d88b212ea6
  • Allow throwing exception while loading parent class in 4b9ebd837b
  • Fix bug #78525 in df982da587
  • Fix use-after-free in assign-ref compilation in 4226c8247f
  • Include stddef.h in zend_portability.h for offsetof() macro in ec30a3b171
  • Define OBJ_PROP_TO_OFFSET() using XtOffsetOf() in ee0bf4b24d
  • Fix symtable_cache_limit assignment in phpdbg in fa07a9c223
  • Use XtOffsetOf() in url_scanner_ex in ab4f725d83
  • Fix double-free on invalid large octal with separators in 3f76f9416f
  • Sanity-check array/object lengths during unserialization in 4377a8ea41
  • Fix test after unserialize change in c8359fcea2
  • Fix leak in SplObjectStorage unserialization in 8873df8e86
  • Fix segfault when unserializing abstract class in 0d3da6ac25
  • Fix use-after-free due to packed->mixed conversion with __unserialize() in c3376bf7ae
  • Fixed bug #78545 in 2f6efd835d
  • Check for exception after calling count_values() in d266ba4f2d
  • Enable --with-mhash on CI in 66351025c8
  • Increase timeout in test in 175f4f24ae

Peter Kokot

Philip Hofstetter

  • add FFI::isNull() to check whether a FFI\CData is a null pointer in f6ff7eb335

Remi Collet

Sara Golemon

Simonov Denis

  • Request #77863: PDO firebird support type Boolean in input parameters in 481f89551e

Stanislav Malyshev

Tyson Andre

  • Add new missing functions from ext/hash in 1a905bcb1e
  • Add missing opcache return info for ext/standard in 4de8503c22
  • Add missing opcache return types for functions in spl in 94e2f25f07
  • Fix opcache zend_func_info for microtime/gettimeofday in 45e529d673
  • Add opcache return type for random_int() in 3e89e9a636
  • Fix opcache return type for get_headers in zend_func_info in 29bced9521
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.