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

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

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

Commit List

Andrii Dembitskyi

  • Fix SplFileObject::fseek() method description in GH-7321

Andy Postnikov

Ben Ramsey

  • The master branch is now for 8.1.0beta2 in 718b675fb6
  • Change release process to create branch at RC1 in fda0ed58d3
  • Update versions for PHP 8.1.0beta2 in e46253f769

Christopher Jones

  • Update OCI8 tests for oci8.old_oci_close_semantics deprecation in 328a07daf5

Christoph M. Becker

Dmitry Stogov


  • Fixed failed test in extension skeleton in 9fb93e8ed1

George Peter Banyard

  • [skip-ci] Fix comments and UPGRADING.INTERNALS for zend_type changes in fb52b3c915

Hao Sun

  • Fix a typo in function execute_ex in GH-7315

Jakub Zelenka

  • Sync the FPM openmetrics status with php-fpm_exporter in 590af4678b

Javier Eguiluz

  • Fix some typos in GH-7320
  • Fix some mismatches in preprocessor directive comments in 7c9ac479eb
  • Remove a redundant expression in 70872dde94

Joe Watkins

Kamil Tekiela

  • Prevent mysqli::next_result from reporting errors from previous calls in GH-7304
  • Remove wrappers for *printf functions in GH-7313
  • Remove mysqlnd_field_type_name in 254d1641bb
  • Remove get_parameter_metadata in fb85731c67
  • Drop mysqlnd statistics triggers in 132d499424
  • Fix typo [no-ci] in 6b1337b736
  • Fix typos in GH-7327

Levi Morrison

  • Remove leading underscore for _zend_hash_find_known_hash in GH-7260

Mike Pall

  • DynASM/x86: Add missing escape in pattern in 58040f257c

Máté Kocsis

  • Migrate to PHP-Parser 4.12.0 and regenerate some arginfos in 23b1c4a982
  • Add support for generating readonly properties via stubs in GH-7297
  • Fix oci8.old_oci_close_semantics deprecation is always displayed in 87c181a0b0
  • Display the readonly property modifier when printing reflection info in 8d25b62414
  • Validate that promoted readonly properties have a type in 3babe9576e
  • Improve class inheritance error messages in GH-7307
  • Add support for generating classynopses from stubs in ac17b3646d

Nikita Popov

  • Don't enable rc_debug mode if module startup fails in 1da5df8029
  • Fix user ini parsing under RC_DEBUG in 21d9931007
  • Fix return type of DOMNodeList::item() in 1602db2d3f
  • Add variation job with RC_DEBUG=1 in 0fb1ccca7c
  • Sync JIT zend_check_string_offset() in a190c7fdb7
  • Sync JIT overloaded assign/inc/dec overloaded property in a3f5b11994
  • dom_import_simplexml() cannot return null in a0893865b3
  • Set PROFITABILITY_CHECKS=0 on variation job in 4a8efc39c1
  • Forbid multiple readonly modifiers in 11b990f848
  • Add support for verifying optimizer func info in 7b85d3bbdd
  • Transfer MAY_BE_INDIRECT for VERIFY_RETURN in e3d90fa7de
  • Print MAY_BE_INDIRECT in dump in d1456d1e3c
  • FETCH_STATIC_PROP_IS may return undef in e2194c18df
  • Add RETURN/RETVAL_COPY_DEREF() macros in 6d505d4445
  • Don't return reference from Fiber::getReturn() in 578b785ecf
  • Fix typo in 9e787d51b5
  • Add explicit IntlPartsIterator::getRuleStatus() method in a5ad9eeefa
  • Remove unnecessary PDORow get_method / get_class_name handlers in 8a26cbe0dd
  • Always use separate static_members_table in 3eb97a4566
  • Add test for bug #80564 in 5ac55af5e5
  • Fix bug #63327 in 338a47bb85
  • Set called_scope in __callStatic closure trampoline in a8926474cb
  • Fix bug #66719 in dfd05da97f
  • Assert that call to method always has called scope or object in 8befb6d84f
  • Remove zend_cleanup_internal_classes() in 89d0115409
  • Remove redundant static_members/mutable_data cleanup in 36d2dd087a
  • Share zval_make_interned_string() helper in c4f4f1ece7
  • Add support for internal enums in a374230c15
  • Remove special ctor handling in abstract class verification in 56ef117419
  • Don't force property type resolution for include preloading in 70195c3561
  • Fix enum cast AST allocation in 645ef62693
  • Don't force constant resolution for include preloading in 703e92c121
  • Fix preloading of enums in c1959e63e5
  • Fix enum cast AST allocation, again in aef3bb70f4
  • Allocate map_ptr for mutable_data during preloading in b35418402f
  • Don't use IMMUTABLE flag to decide whether mutable_data is used in 5a7e1a7aa8
  • Fix preloading of trait property attributes in 1bd6fafa2f
  • Increment refcounts in mutable data copies in 8675380b67
  • Don't unlink preload file if test failed in 6aa08736bb
  • Handle missing class when evaluating CONST_ENUM_INIT in 8834cf013b
  • Reuse part of the class binding logic in dcf5e5bbf0
  • Fixed bug #81298 in 9d0db2e98a
  • Don't use opaque for encoding detection score in a1c1ee6a48
  • Extract early binding registration code in f78216f62e
  • Use consistent line numbers for early binding errors in 380e705fc2
  • Add missing EXTENSIONS section in 89aa42c74b
  • Preload unlinked classes, remove preload autoload in GH-7311
  • Clean up dependency resolution during preloading in 29aed2a6c8
  • Fix parameter name in call_user_func() error message in 840e441d2d
  • Fix parameter name in count() error message in 6c7b322de2
  • Drop HAS_UNLINKED_USES flag in b5746a4c7f
  • Don't print preload warning for non-top-level classes in b1b0c81e39
  • Perform preloading attempt on copied class in d836046ab8
  • Don't reverse class order during preloading in 67b5d8fcdc
  • Skip shebang on preload script in 9ee9393784
  • Fix session + Serializable tests in 185212109c
  • Tweak some tests to be --preload compatible in 06cf4ff03e
  • Skip some tests under --preload in 1a370d3321
  • Automatically skip ext/opcache tests under --preload in 1015eefffe
  • Test --preload in CI in d6368f7232
  • Remove dynamic defs from methods as well in 8356da600b
  • Remove declares inside functions as well in 9fe3aab7c5
  • Fix mutable data initialization during lazy class loading in 6e91a820d8
  • Move php_gcvt to zend_gcvt in d28f6e694d
  • Remove FORMAT_CONV_MAX_PRECISION in e14fbc84ac
  • Add additional double to string APIs in 604848188b
  • Fix ASSIGN_DIM to NEXT with rc=1 reference value in 6d5ae6496c
  • Update libmysqlclient job to MySQL 5.7.35 in 467504c952

Remi Collet

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.