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.31 is the latest in the series.
Downloads
Source Code
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.1.0RC3
./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
Docker/Podman Containers
docker pull php:8.1.0RC3-cli-alpine
docker pull php:8.1.0RC3-cli
docker pull php:8.1.0RC3-fpm-alpine
docker pull php:8.1.0RC3-apache
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 usesmb_check_encoding
in ca33ab59ad- Bug #81390:
mb_detect_encoding
should not prematurely stop processing input in c25a1ef8d0
Aliaksandr Bystry
- Fix #70962: XML_OPTION_SKIP_WHITE strips embedded whitespace in a9661a5293
Anatol Belski
- fileinfo: Fixed bug #78987 High memory usage during encoding detection in fa96c7e000
- libmagic: Update patch in 3c40d9bf77
- fileinfo: Fix test skip condition in df5d7ec482
- fileinfo: Adjust value in test in 0208374ad4
- fileinfo: Capture more sizes for test as delivered by AppVeyor in e56435c86d
- fileinfo: Capture more sizes for test as delivered by travis-ci in 6e0acece68
- fileinfo: Fix test value for s390x on travis-ci in 8f75ab0dfc
- NEWS: Add note for bug #78987 in 49c9fbbfe2
- NEWS: Add note for bug #78987 in 125f305b1d
Ben Ramsey
- Prepare for PHP 8.1.0RC3 in 1f0d35b941
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
- Update Unicode tables to 14.0.0 in fe36b81d5e
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()
intozend_jit_hash_index_lookup_rw()
andzend_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
- Fix bug #81472: Support large device major/minor number in 9ad8fadcbb
Michael Voříšek
- Fix gdAlphaMax limit typo in 2c3dfe5160
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
- Configuring for 8.1.0RC3 in cba708bbb6
Tim Starling
- Use ASCII lower case for misc case folding in c96be7b8f2