PHP 8.1.0RC2: Downloads, Changelog, News

Release Information

PHP Version
PHP 8.1
Release Date
Release Type
Bug Fix Release
Release Status
Use PHP 8.1.28 instead
Branch Status
Security-Fixes Only

PHP 8.1 is currently only receiving security fixes. PHP 8.1.0RC2 is not the latest version in the series, and using this release is not recommended. PHP 8.1.28 is the latest in the series.


Source Code

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

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

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

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

Commit List

Bob Weinand

  • Fix #81435 Observer current_observed_frame may point to an old (overwritten) frame in 12b0f1b7cc

Christoph M. Becker

Derick Rethans

Dmitry Stogov

  • Avoid class name validation if it's already have IS_STR_CLASS_NAME_MAP_PTR flag in c7fdf9c139
  • JIT: Fixed call to zend_free_compiled_variables() in 66f8866a62
  • Fixed bug #81409 (Incorrect JIT code for ADD with a reference to array) in cbc925e510
  • JIT: Update run_time_cache slot in zend_jit_find_func helper in d4ed6b635f
  • JIT: eliminate check for undefined constant if there is a persistent constant in 1bb6cf5396
  • JIT: improved code for protected properties access in aed94e2ca8
  • JIT: prefer string reallocation instead of allocation/memcpy/deallocation in 7fcb45dffa
  • Fixed ARM JIT failure introduced in d4ed6b63 in 487eface86
  • JIT: fixed MUL+SEND optimization when MUL throws an exception in 06275d940c
  • Properly check if BIND_STATIC may throw in ebd1a0a656

George Peter Banyard

  • Fix param name order for Phar::copy() in 0d0c9acafb

Hao Sun

  • JIT: Fixed exit from CALL VM with GCC Global Register Variables in cfb21e8dc1

Jakub Zelenka

  • Make OpenSSL tests less dependent on system config in 43f0141d74

Kamil Tekiela

Máté Kocsis

  • Properly escape the default value of string properties and enum cases in 4483ecf5a9
  • Revert unintended tentative return type change in 194f1f095f
  • Fix forgotten test in 805f2b9803
  • Fix default value of $flags in idn_to_ascii() and idn_to_utf8() in d5aed7b0e3
  • Fix the return type of ftp_raw() in GH-7466
  • Add more specific array return type hints for various extensions - part 3 in GH-7467
  • Add more specific array return type hints for various extensions - part 4 in GH-7469
  • Improve class synopsis root element generation in f588764292
  • Fix class synopsis generation for interfaces in 4c9892d1e3
  • Remove extra space before param default values in a5e5483439
  • Fix documentation generation when legacy arginfo is generated in 73063db5c8
  • Change gen-stub.php to gen_stub.php in help text in ea9f943d33

Nikita Popov

  • Fully qualify ReturnTypeWillChange in deprecation message in 3eeeeeb104
  • Don't overwrite unwind exception in 85b80c5aaf
  • Fix jump after zend_jit_invalid_property_assign() in b0e16f0e4f
  • Save register before throwing undef var notice in e22fb46127
  • Apply fix to ARM JIT as well in f2bb739eeb
  • Check whether expected types are present for compound op jit in bac054dbf3
  • Also make sure binary op operands can't be undef in 8c3d33a054
  • Check that POST_INC/DEC has use in DFA optimization in 5cae6b9b0d
  • Allow using readonly as function name in 76348f3378
  • Handle undef value in assign_dim jit in e7663785a7
  • Reset CE cache slots on opcache reset in 86d470f3e0
  • Fix JIT call chain check without call opcode in 133afe8591
  • BIND_STATIC may throw in b610dce079
  • Try to fix test in ba03c5fb4c
  • Use wildcard for error message in 5d702e33a2
  • Fix BIND_STATIC may_throw check in 1b376b06fb
  • Fix func/class name use after free on opcache OOM condition in 10e9f6b340
  • Fix memory leak in array unpack with refcounted numeric string key in 260d2acdb4
  • Mark ASSIGN result as UNUSED in SCCP in fa3d603ba2
  • Check for no uses before removing result operand in 54bbee96ba
  • Fix JIT for recursive call with too few args in 10bbff8758
  • Apply fix for ARM JIT as well in 25588878bc

Patrick Allaert

Remi Collet

Sara Golemon

Tim Starling

  • Fix O(N) performance of DOMNode::replaceChild() and DOMNode::removeChild() in 781e6b4d21

Tyson Andre

  • Fix inconsistency in true/false/null constant resolution when opcache is not used in GH-7441
  • Fix #81429: Handle resizing in SplFixedArray::offsetSet in GH-7487


  • Fix #81433: DOMElement::setIdAttribute() called twice may remove ID in 424c265478
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.