PHP 8.1 is currently only receiving security fixes. PHP 8.1.0RC4 is not the latest version in the series, and using this release is not recommended. PHP 8.1.30 is the latest in the series.
Downloads
Source Code
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.1.0RC4
./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.0RC4-cli-alpine
docker pull php:8.1.0RC4-cli
docker pull php:8.1.0RC4-fpm-alpine
docker pull php:8.1.0RC4-apache
docker pull php:8.1.0RC4-fpm
Commit List
Aliaksandr Bystry
- Fix bug #69751 in 41df5c0675
- Fix bug #66588:
SplFileObject::fgetcsv
incorrectly returns a row on premature EOF in 52e7e0f521
Ben Morss
- Require libavif version >= 0.8.2 in b4c200f9fe
Ben Ramsey
- The PHP-8.1 branch is now for 8.1.0RC4 in 68ee1b40fc
- Prepare for PHP 8.1.0RC4 in e6d42ab522
Christoph M. Becker
- Fix #81475:
stream_isatty
emits warning with attached stream wrapper in 23e13e2c8f - Fix #81477: LimitIterator + SplFileObject regression in 8.0.1 in ee5711de33
- Fix #81490:
ZipArchive::extractTo()
may leak memory in 4d44271415 - Fix #77978: Dirname ending in colon unzips to wrong dir in e0c0de003b
- Revert "Fix #81424: PCRE2 10.35 JIT performance regression" in a19f655b84
- Fix #81424: PCRE2 10.35 JIT performance regression in 788a701e22
Craig Francis
- Update stub to show default of ENT_HTML401 (for documentation) in 2b25ac6f3c
Dan Pock
- Fix bug #81491: Ensure HAVE_ARGON2LIB is set when compiling using libargon2 in 6d3ef57392
Derick Rethans
- Fixed bug #81504: Incorrect timezone transition details for POSIX data in 68b874d10d
- Prepare branch for 7.4.26-dev in e5d35a3252
- Force UTC in 6166ac51b7
- Bump config.guess/config.sub in all supported branches to support Apple Silicon in cd0c32e7fb
- Bump config.guess/config.sub in all supported branches to support Apple Silicon in 89dfe49321
- Updated to version 2021.3 (2021c) in e81554c6e6
- Empty merge in 760475b43a
- Updated to version 2021.3 (2021c) in 8a61f1ece6
- Empty merge in 2d44367b3f
- Updated to version 2021.3 (2021c) in c55b41d658
- Empty merge in 43b39fd02c
- Updated to version 2021.3 (2021c) in 7ad877ced1
- Revert "Updated to version 2021.3 (2021c)" in 32c0850b4a
- Remove now superfluous tests due to changes in tzdata in 9733d49e14
Dmitry Stogov
- JIT: Fixed memory leak in 4b31cb3eb8
- JIT: Fixed incorrect named parameter handling in 512dfaba3a
- JIT: Allow register allocation for result of STRLEN and COUNT instructions in 7be7ec3098
- JIT: Use
zend_compare()
instead ofcomapre_function()
in 3d35ac0b05 - JIT: Fixed test failures introduced in 3d35ac0b in 9b3069f0a3
- JIT: Use
zend_compare()
instead ofcomapre_function()
in 066f543cac - JIT: Avoid duplicate EX(opline) assignment in 724c4fb2e5
- JIT: Eliminate useless EG(exception) checks after FETCHDIM* in 2c95c945be
- JIT: Combine type guard with overflow detection in a5e502ef4d
- Fixed SSA construction in 22ef1fb832
- Fixed assign coalesce. "$a[0] ??= $a" should evaluate the right $a first in 69fb20f106
- Fixed assign coalesce. "$a[0] ??= $a" should evaluate the right $a first in 80aaeb9696
- JIT: Fixed incorrect overflow detection introduced in a5e502ef in 831a1717f6
- JIT: Fixed register clobbering in f681f9075c
- Fixed type inference that may cause JIT failure in 0b5d62e39c
- JIT: Fixed NaN handling in 8a0873020a
- JIT ARM64: Fixed NaN handling in 5557d15311
XFAIL
: Return types cannot be inferred through prototypes in fd8dfc4248- JIT: Fixed incorrect code generation for JMPZ in cd45bd0a81
- JIT: Fixed incorrect reference handling in PRE_INC/DEC_OBJ in 6ab36fb6f9
- JIT: Fixed wrong comparison skip in a743fd7633
- Fixed bug #81512 (Unexpected behavior with arrays and JIT) in b47a48ff80
- JIT: Fixed FETCH_LIST_R on string in 7cea20f937
- JIT ARM64: Use proper register in c9fb384c40
- Flush error messages emitted during preloading in 45b127ad4a
- JIT: Fixed extension handling in b279de416e
- JIT: Fixed incorrect double/long register hinting in bbd875268a
- Fixed type inference (ASSIGN_OP with typed reference may cause type conversion) in ed8ec9d71e
- JIT: Fixed usage of incorrect specialized zval destructor in ccdda69a18
- JIT: Fixed incorrect deoptimization info in 912f040583
- Fixed type inference for COPY_TMP in a4c41d45cd
- JIT: Avoid generation of unused exit point for conditional braches with NULL/FALSE/TRUE operand in da05c0a84f
Hao Sun
- ARM64:
range.phpt
failed under RELEASE mode in 6f6fd27d2f - Reduce threshold further in
ext/date/tests/bug73837.phpt
in 582e21fbda
Jakub Zelenka
- Add FPM prod idle timeout test in 08f52b1643
- Fix conflicting pattern wrapping in FPM openmetrics test in 4ef6280b9a
- Add FPM prod idle timeout test with 6s sleep in edfb347019
- Add the actual test for FPM prod idle timeout test with 6s sleep in 66a655fdf4
Jaromir Dolecek
- Fix bug #75941: Fix compile failure on Solaris with clang in 26d28c3b42
Joe Watkins
- Fix #81380 observer may not be initialized properly in c884a5a21e
Kamil Tekiela
- getTimestamp does not return false in 5fbba9b995
Lauri Kenttä
- Fix #81496: CLI server logs wrong request method in cdcdb33080
Matteo Beccati
- Add test for
pg_put_line()
andpg_end_copy()
in be36bf5aca - Fix #81509 pg_end_copy still expects a resource in 958daa6529
Máté Kocsis
- Add more specific array return type hints for various extensions - part 6 in GH-7474
- Fix the return type of
imagecolorexactalpha()
in 17fa9b77bd - String default values are enclosed in quotes rather than apostrophes in 2127b49c65
Nikita Popov
- Convert exception during delayed autoload to fatal error in c8fa477064
- Handle throwing destructor in BIND_STATIC in ec54ffad1e
- Fix inference for INIT_ARRAY with illegal offset type in 944d653b3d
- Add env var to disable skip cache in 9fc6be297f
- Fix backtraces with overridden
zend_execute_ex
in 018ddba9ae - Disable JIT in test replacing
zend_execute_ex
in 6768aae40a - Fix cache slot assignment for ASSIGN_OBJ_OP in d0860f67ca
- Create reference wrappers in SEND_UNPACK if necessary in e11faad233
- Export AST for default value strings in reflection in f34114b1fb
- Revert "JIT: Use
zend_compare()
instead ofcomapre_function()
" in 304d78b7dc - Revert "Add FPM prod idle timeout test" in 69514e6ffb
- Don't populate CE_CACHE during compilation in ac70bb362e
- Start new block after loop free in 493c91c742
- Disable failing FPM test in 4c01bd2ade
- Restore CE_CACHE clear on persist in e8e4852ebb
- Fix COPY_TMP live range construction after optimization in bbd3f714d7
- POST_INC_OBJ/POST_DEC_OBJ don't have optional result in c958adce70
- Fix return type verification with undef var in f890c9c5e3
- Fix duplicate undef warning in assign_dim_op in 11a9b036a8
- Use ephemeral port in test in e91a751e3d
- Reuse wrong string offset logic in jit in a4fa00ead3
- Fix build without global registers in dab6527352
- Don't start new block after loop free in f455894bb6
- Fix array cast type inference wrt packed arrays in 3661c1932c
- Fixed bug #54350 in 1519770288
- Set opline before calling undef op helper in 455837139e
- Handle undefined dim in assign_dim_helper in 08c29a657d
- Check exception after undef var notice in b564113756
- Fix failing PDO PgSQL test in c0cbf3a6eb
- Fixed bug #81514 in bd3e536383
- Regenerate optimizer info in 41789e1fc9
- Fixed bug #81502 in 7f0d3f5413
- Fixed bug #81494 in fcabe693ba
- Make weak ref notify robust against bailout in a4b209fdcf
- Fix long-term shutdown/tick fci/fcc storage in fabcc9a350
- Preserve key/value type invariant in
range()
type inference in f0cf999223 - Don't free FETCH_W operand if GLOBAL_LOCK in a2e3ca1f5b
- Don't replace tmp with cv in YIELD argument in 9ebe8494b8
- Fix bug #81521 in 53f89219ab
- Fix incorrect access of AST_UNPACK in f555544faf
Raphaël Jorel
- Ignore generated files by tests in extension skeleton in 3c52db1b57
Remi Collet
- Fix #81520 TEST_PHP_CGI_EXECUTABLE badly set in
run-tests.php
in ea00e6501c - NEWS in 0ad19e40a6
sasezaki
- Fix bug #81474: Make ReflectionAttribute non-final in e286313fa7