PHP 8.1.0RC3: Downloads, Changelog, News

Release Information

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

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


Source Code

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

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

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.1.0RC3-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.0RC3-fpm

Commit List

Alex Dowad

  • Optimize text encoding detection for speed (eliminate Unicode property lookups) in 6acd4f7f3a
  • mb_detect_encoding with only one candidate encoding uses mb_check_encoding in ca33ab59ad
  • Bug #81390: mb_detect_encoding should not prematurely stop processing input in c25a1ef8d0

Aliaksandr Bystry

Anatol Belski

Ben Ramsey

Christoph M. Becker

  • Fix OOB read due to timezone_open() with 5 digit offset in fac3fbcb07
  • Fix #61700: FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE failing in 288c25f7d1
  • Fix #81420: ZipArchive::extractTo extracts outside of destination in df2ceac25a
  • 7.3.32 is next in f2f40b1cf7
  • Fix #80663: Recursive SplFixedArray::setSize() may cause double-free in 2d6684091f

Colin O'Dell

Dmitry Stogov

  • Fixed bug #79576 ("TYPE *" shows unhelpful message when type is not defined) in 0badc7de96
  • Fixed error message in de20a89b06
  • Fixed error message in 23327bf4b3
  • JIT: Fixed call chain construction in 236e7aef01
  • Tracing JIT: Record information about elements of arrays and use it to improve generated code (ASSIGN_DIM) in 12f9dad185
  • Fixed support for numeric string keys in ceaefdb01b
  • Fixed condition in 6f54b17485
  • Tracing JIT: Use recorded information about elements of arrays to generate better code for ASSIGN_DIM_OP in 2172142346
  • JIT: Fixed memory leak in BOOL_NOT when opearnd ia a reference to bool in 5e3eaf14fe
  • JIT: Removed wrong branch in 5a1ab2c9b3
  • JIT: Fixed jump to undefined label in beba96dd99
  • Tracing JIT: Use packed array guards for ASSIGN_DIM_OP and allow to move them out of loops in e5541c943a
  • JIT: Fixed warning when assign undefined variable to property in 04209de93c
  • JIT: keep register value across call in 015cafa38c
  • JIT: Fixed incorrect assignment of undefined variable in 01cfd5e4f9
  • JIT: Move unusual checks for IS_REFERENCE to cold paths in ac1dd73048
  • JIT x86: Fixed register clobbering in code produced for "$x[$y] %= $z" in f0f774a129
  • JIT x86: Fixed incorrect EX(func) initialization for recursive calls in 0e0f50b413
  • JIT: Disable recursive call optimization for VM without global register variables in 48d050ef72
  • JIT: Disable recursive call optimization for VM without global register variables (ARM64 part) in 6d04d165b6
  • Tracing JIT: Fixed bug in register allocator in 19854371ed
  • Tracing JIT: Fixed FETCH_DIM_R with packed array and negative key in 4d4a175dc0
  • Tracing JIT: Record information about types of defined object properties and use it to optimize code for ASSIGN_OBJ_OP, PRE/POST_INC/DEC_OBJ and FETCH_OBJ_R/IS in f2ceb639b8
  • JIT: Fixed JIT for FETCH_OBJ when op1 is a reference of non-object in 7a93a8a6fd
  • Fixed type inference in e588f24276
  • JIT: Fixed memory leak when opperand of ADD IS_VAR and IS_REFERENCE in c77c79a093
  • JIT: Fixed possible memory leak in 09d4037a17
  • Check for zend_shared_alloc() failures in 17a99f2b11
  • Remove weird condition in 4317da35d3
  • Fixed use-after-free introduced in f2ceb639 in 0f084387f8
  • Tracing JIT: Fixed possible stack-buffer-overflow in 08100e81e5
  • Tracing JIT: Remove incorrect assertion in 430454268f
  • JIT: Fixed register clobbering in a0bea10e5b
  • Tracing JIT: Fixed possible incorrect megamorphic call from a trait in 3e6919cfb3
  • Fixed typo in 92d0abd075
  • JIT: Improve $this->property access in closures in d1a0b93c64
  • JIT: Eliminate useless exception check in ec0f2c6ea1
  • JIT: Avoid property type reloading in bec1d2f290
  • JIT: Remove FETCH_THIS+FETCHOBJ* optimizations for closures for in 3e706536d9
  • JIT: Wrong register in dbdef5980f
  • JIT: Improve property access (Avoid unnecessary property address loading and exception check) in 35ff71f048
  • JIT: Fixed missing type load in 7981d48aca
  • JIT: Fixed missed zval type initialization in 9ce388b41b
  • JIT: Split zend_jit_hash_index_lookup_rw() into zend_jit_hash_index_lookup_rw() and zend_jit_hash_index_lookup_rw_no_packed() in 325865d750
  • JIT: Call zend_hash_index_find() instead of _zend_hash_index_find() if we didn't check for packed array before in 2e02b1f157
  • JIT ARM64: Move property load into right place in 51f806783c
  • zend_std_get_static_method() should return NULL in case of exception thrown from user error handler in f81f874408
  • JIT: Fixed result when assigning to typed reference in 17b127a84f
  • JIT: Fixed label mess in 3fd1f6cdad
  • Tracing JIT: Fixed possible memory-leak or missed destructor call in c30298bf57
  • JIT x86: Fixed NaN handling in 7710047ed1

George Peter Banyard

  • Fix Bug #81462 mime_content_type() indicates wrong arg num on TypeError in 0ea38b9509

Hao Sun

  • JIT/arm64: fixed unsafe immediate encoding in commit d4ed6b6 in GH-7494

Lin Yang

Michael Voříšek

Máté Kocsis

  • Fix a few more classsynopsis generation issues in 8168d312f9

Nikita Popov

  • Handle undef assignment to typed ref in 3ee85ccd4a
  • Don't undef result operand if there is none in 6de8b08f60
  • Fix result operand undef for ARM JIT as well in 24082d5492
  • Add observer_ prefix to test name in d3684ff424
  • Release observed function name table in 59ae64825d
  • Remove unnecessary const qualifier in 7968ce93a8
  • Add missing field initializer in d5ee081cfd
  • Fix compiler warnings in ext/intl in 410bdaba3f
  • Handle SWITCH_STRING with optimized away FREE in 7257e7e5aa
  • Fix may_throw for ASSIGN_OBJ in 1548418461
  • Don't const evaluate increment of array in SCCP in 4c8093a9f1
  • Don't leak header callback if headers already sent in 9bff96396d
  • Undef result on throwing typed reference assignment in 83f283f5ea
  • Fix persistent smart_str allocation in af8fccee9c
  • Replace SKIPIF with EXTENSIONS in 28f2b727c7
  • Add missing scope check for readonly prop initialization in 4796183958
  • Don't jit FE_RESET_R with undef operand in d46b10296e
  • Fix SEND_USER with ref arg in 01453a0af7
  • Try harder to clean up unreachable loop free block in e0e5b59d2e
  • Fix FETCH_OBJ_IS type inference in a49a309386
  • Use ephemeral ports in socket test in 07f6c61c8e
  • Make setcookie() test more robust against the passage of time in b4d7387468
  • Don't replace values in unreachable code in sccp in 1b33da5dd2
  • Fixed bug #81457 in ea11e79a43
  • Fix persistent smart_str allocation in 549cb4406e
  • Fix missing undef checks for comparisons in 95e0cc06a2
  • Check for undef var in typed property assignment in f4bcf8c393
  • Don't unconditionally add array value type for undef in 61445248cb
  • Fix range() return type inference for undef operand in a846547ed4
  • Make IntlCalendar::roll() return type tentative in 4fcca032e1
  • Fix JIT typed property inc/dec in 770879702a
  • Fix ASSIGN_STATIC_PROP_REF type inference in 983a4fc4a3
  • Don't treat expression exit as terminator in c9762be566
  • Bail on exception during delayed autoload in be8217368b
  • Fixed bug #81465 in a942b284e6
  • Use locale-independent case conversion in mb_send_mail() in 46315defc7
  • Avoid shell for proc_terminate() test in 2323dc2ac7
  • Fix leak when iterating uninitialized RecursiveIteratorIterator in 3adbafeef7
  • Handle pi nodes in replace_predecessor in 038bc27787
  • Fix DCE of unreachable phi in cycle in ddf8910237
  • Start block at loop var free in 823888c472
  • Fix relative offsets when copying JMPZNZ in 7d483418e2
  • Fix bug #81474: Make Reflection(Attribute|Enum|EnumBackedCase) non-final in f2ae8a3357
  • Fix block marking for two arm math in 17d6efc729
  • Check exception after QM_ASSIGN of undef var in f381079398
  • Undef result if undef dim warning promoted to exception in fe1633f010
  • Check exception before using undef_result_after_exception() in 0391c55b0c
  • Fix type inference and SCCP with typed references in d8c2ff6486
  • Remove outdated code in ASSIGN_DIM type inference in cdc05eba61
  • Fix ASSIGN_DIM result inference with typed refs in 1bb7ee3207
  • Fix leak of invalid stream_read() return value in 2f798d99b7
  • Fix leak with ASSIGN_OBJ on null in 97b5eeeb6c

Patrick Allaert

Tim Starling

  • Use ASCII lower case for misc case folding in c96be7b8f2
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.