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

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

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

Commit List

Aaron Piotrowski

  • Fiber ucontext support in GH-7226

Alex Dowad

  • Fix conversion of Big5 and CP950 text (and add test suite) in 73c6a5b89d
  • Reduce size of conversion tables for CP936 in 340164bcc9
  • Fix conversion of GB18030 text (and add test suite) in 13136a575d
  • Fix typo in mbfilter.h in 26fc7c4256

Benjamin Eberlei

  • Fix #80097: Have ReflectionAttribute implement Reflector and __toString in bc39abe8c3

Ben Morss

  • AVIF support for getimagesize() and imagecreatefromstring() in cee33bab16

Ben Ramsey

  • The master branch is now for 8.1.0beta1 in c6d4f60827
  • Update versions for PHP 8.1.0beta1 in a7f59d8163

Christoph M. Becker


  • Fix pointer constness warning in crc32 module on arm64 in GH-7225

David Carlier

  • sockets enabling SO_MARK socket option which is relatively similar in 4c873df7d5
  • getrandom support for DragonFlyBSD too in ffc30c5b8d

Derick Rethans

  • Move date timezone cache destruction to post deactivate in 26b1572d37

Dmitry Stogov

  • FFI::CType reflection API in a2845e32cb
  • Fixed bug #81225 (Wrong result with pow operator with JIT enabled) in 9cd437138e
  • Skip test on 32-bit system in ee981619ce
  • Fixed bug #81249 (Intermittent property assignment failure with JIT enabled) in c0e4932816
  • Avoid ASAN integer overflow warnings in 15abbea5e7
  • Fixed bug #81256 (Assertion `zv != ((void *)0)' failed for "preload" with JIT) in 1e4095f03d

George Dietrich

George Peter Banyard

  • Deprecate using the implicit default PgSQL connection in 1f42777927
  • Use standard bool type instead of bool_int in 10f416f5c2
  • Use standard bool type instead of boolean_e in 5e4d727f6a
  • Remove unused macro in 2bf68b3c01
  • Refactor conversion function in b901c0528c
  • Use standard 64bit unsigned int type in 97785545cf
  • Use standard 64bit signed int type in 02e48d99c9
  • Drop register keyword in 282abfed95
  • Make syslog() binary safe in 0ba155cd57
  • Fix bug pointed out in feature request 81268 in 3cfcfacd36
  • Fix intersection types being nullable via implicit forced nullability in 9e1c961110
  • [skip-ci] Fixup UPGRADING documents in 453a5163ce

Hao Sun

  • Fixed incorrec immediate encoding when using LEA optimization in c5d93aeee9

Joe Watkins

Kamil Tekiela

  • Sccp new functions for ct in GH-7220
  • Deprecate autovivification on false in 052af90b86

Marco Pivetta

  • Make ReflectionProperty/Method always accessible in 6e16e1daa9

Meletis Flevarakis

  • Verify exception on ZipArchive::getExternalAttributesName when $name is empty in GH-7230

Máté Kocsis

  • Add support for final class constants in a5360e80c2
  • Various ext/spl stub fixes in 80e5ad5a29
  • Declare tentative return types for ext/spl - part 1 in GH-7115
  • Fix some return types in ext/spl in d618ed0a2d
  • Declare tentative return types for ext/spl - part 2 in 6d805ed275
  • Add support for the never type in gen_stub.php in 553574165a
  • Declare the $value param of define() as mixed in 339ce9430e
  • Fix some more ext/spl return types in fc6656e0ac
  • Declare tentative return types in ext/spl - part 3 in GH-7239
  • Deprecate oci8.old_oci_close_semantics in GH-7258
  • Declare tentative return types for Zend in GH-7251
  • Fix some smaller formatting inconsistencies in stubs in fc0d8983d3
  • Actually, abstract methods don't have a body in 7a9a37d909
  • Declare tentative return types for ext/dom in GH-6985
  • Indent stubs inside global namespace blocks in GH-7261
  • Use single line phpdoc in stubs where possible in 2378f35787

Nikita Popov

  • Fix use after free on compound division by zero in 62ecf54f35
  • Fix constant update for shadowed private property in 58699ffcf1
  • Deprecate date_sunrise() and date_sunset() in 5bb83b3778
  • Deprecate IAP functions on objects in dcc8463ae5
  • Deprecate calling mb_check_encoding() without argument in 639015845f
  • Deprecate FILE_BINARY and FILE_TEXT constants in 92f6e21523
  • Deprecate IntlCalendar::roll() with bool argument in 1c50784ae7
  • Deprecate mhash in bf0c1ce1a0
  • Deprecate mysqli::init() in 625b89af2f
  • Deprecate odbc_result_all() in 1c07b11b1c
  • Deprecate FILTER_SANITIZE_STRING/STRIPPED in bf94010b4b
  • Deprecate return by ref from void function in f0b190c32d
  • Deprecate imap NIL constant in 2bc23cc6e3
  • Test Laravel 8.x against PHP 7.4 in bb43aa2ed3
  • Skip bug_50755.phpt in repeat mode in 455214d6f0
  • Deprecate strptime() in bed7139375
  • Deprecate auto_detect_line_endings in 232aa34b9f
  • Don't handle unnamed arg in closure debug info in ab353a50e9
  • Use function for ctype implementation in dc80ea7e38
  • Use newer PHP version in community job in 8cec7db48d
  • Remove ctype tests for oct/dec int literals in d60e3a2957
  • Temporarily disable imagecreatefromstring_avif.phpt on FreeBSD in a09754b3d3
  • Deprecate ctype_*() on non-string arguments in 08069165aa
  • Remove leftover handling of PHP4 constructors in 2fe242db39
  • Remove unnecessary property name unmangling in cdbe39b16a
  • Deprecate direct access to static trait members in a80360dbed
  • Deprecate filter.default in aa733e8ac8
  • Fix GC of object properties HT in 5f8ed7765a
  • Clean up gc_scan() implementation in 5bde82a442
  • Don't return embedded HT from WeakMap get_gc() handler in e081db0410
  • Return value from ZEND_ATOL in efbb2198d4
  • Remove incorrect uses of zend_atoi() in 989205e95c
  • Remove zend_atoi() in GH-7232
  • Use unsigned arithmetic in zend_atol in 26e8a3ba29
  • Add upgrading note in 5f8489a11d
  • Fix php_user_filter::filter() return value in 67776308e2
  • Check internal function type consistency in zend_call_function in ee65e92070
  • Fix Phar::offsetGet() return type in 3fc3cfbad0
  • Fix typo in cce31657d6
  • Add limited support for new in initializers in 52d3d0d8d7
  • Fix unbalanced NEW call_level in JIT in d550c8488a
  • Fix leak if attribute arg evaluation fails while printing in 882289eb9e
  • Deprecate SoapClient ssl_method option in 9491694903
  • Deprecate strftime() and gmstrftime() in 4b3615a33f
  • Eliminate null return value for Normalizer::normalize() in 5dc995df37
  • Backport some intl stub changes from master in 2afbacc16d
  • Remove null return type from msgfmt_parse_message() in 9fe4966811
  • Throw from SplObjectStorage::current() for invalid iterator in 58f3f751ca
  • Throw from MultipleIterator::key/current() for invalid iterator in 42cb5b5fa8
  • Drop incorrect cache_slot optimization for typed properties in ba8bcf3992
  • Rename getStructFieldOffset/Type() parameter in 02b803a5fd
  • Add exception check to zend_jit_fetch_obj_w_slow() in 6fd880890c
  • Undef slot before destroying in unset_property in ebd3a21002
  • Allow objects in define() in 53aed48e5d
  • IteratorIterator::getInnerIterator() can't return null in c252420d08
  • Revert "IteratorIterator::getInnerIterator() can't return null" in 11f62c989e
  • Narrow ArrayIterator::key() return type in f556a30b92
  • Fix RecursiveIteratorIterator segfault for invalid aggregate in b9ae73eee9
  • Handle both WARNING and UNRESOLVED during early binding in 1bc5bd7fe2
  • Fix race condition in automatic zend_vm_gen.php invocation in 3025126f43
  • Add UPGRADING entry for socket options in 172f84bfe4
  • Fix deprecation warnings in phar.php in 4423253700
  • Add --bless option to run-tests.php in bf40a933cd
  • Restore zend_atoi() in a733b1ada7
  • DOMNodeList::count() cannot return false in f089e8afbd
  • DOMNamedNodeMap::count() cannot return false in 4cf0269e4e
  • Add minimial tentative types to dom in cad6144d18
  • Actually add the tentative type marker in b9893c2a18
  • Don't return bool from Phar::offsetUnset() in edb6b375dd
  • Don't track internal class dependencies in a837d35366
  • Fix assert with attribute + first-class callable in assert in b6dcab2cbb
  • Throw DomException for DOM out-of-memory error conditions in c2a58ab07d
  • Add str_replace/array_unique to ct eval list in 273720dcf2
  • Add ZEND_ACC_NOT_SERIALIZABLE flag in 814a932734
  • Remove THREAD_LS in a4db74364d
  • Set UNION bit for internal class union return type in 084d49a262
  • Fix file name clash in curl_copy_handle tests in 977c3d163f
  • Implement readonly properties in 6780aaa532
  • Fix typo in comment in c50f4dece0
  • Fix bug #81272: Fix func info for functions returning EMPTY_ARRAY in 051ff33660
  • Fix type info for pg_socket() in b420d09f4d
  • Fix snmp test for ipv6 in c289f5241d
  • Create persistent interned string for password algos in b0d4d6ebb4
  • Duplicate possibly persistent string in phar metadata clone in 9726bc6977
  • Create interned strings for internal union types in bd2cd2617b
  • Fix RC_DEBUG check for IS_NULL type in 7572d9bdd3
  • Remove gcov mention from release process docs in 4a8b370d64

Sara Golemon


  • Remove unnecessary sockaddr memory allocation in GH-7219

Tyson Andre

  • Rename FFI getFuncArg* to getFuncParameter*, $arg_index->$index in GH-7236
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.