PHP 8.1 is currently only receiving security fixes. PHP 8.1.15 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.15
./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.15-cli-alpine
docker pull php:8.1.15-cli
docker pull php:8.1.15-fpm-alpine
docker pull php:8.1.15-apache
docker pull php:8.1.15-fpm
ChangeLog
Apache
- Fixed bug GH-9949 (Partial content on incomplete POST request).
Core
- Fixed bug GH-10072 (PHP crashes when execute_ex is overridden and a __call trampoline is used from internal code).
- Fix GH-10251 (Assertion `(flag & (1<<3)) == 0' failed).
- Fix wrong comparison in block optimisation pass after opcode update.
- Fix GH-10248 (Assertion `!(zval_get_type(&(*(property))) == 10)' failed).
Date
- Fixed bug GH-9891 (DateTime modify with unixtimestamp (@) must work like setTimestamp).
- Fixed bug GH-10218 (DateTimeZone fails to parse time zones that contain the "+" character).
Fiber
- Fix assertion on stack allocation size.
FPM
- Fixed bug GH-9981 (FPM does not reset fastcgi.error_header).
- Fixed bug #67244 (Wrong owner:group for listening unix socket).
Hash
- Handle exceptions from __toString in XXH3's initialization
LDAP
- Fixed bug GH-10112 (LDAP\Connection::__construct() refers to
ldap_create()
).
MBString
- Fixed:
mb_strlen
(and a couple of other mbstring functions) would wrongly treat 0x80, 0xFD, 0xFE, 0xFF, and certain other byte values as the first byte of a 2-byte SJIS character.
Opcache
- Fix inverted bailout value in
zend_runtime_jit()
- Fix access to uninitialized variable in
accel_preload()
. - Fix
zend_jit_find_trace()
crashes. - Added missing lock for EXIT_INVALIDATE in zend_jit_trace_exit.
Phar
- Fix wrong flags check for compression method in
phar_object.c
PHPDBG
- Fix undefined behaviour in
phpdbg_load_module_or_extension()
. - Fix NULL pointer dereference in
phpdbg_create_conditional_breal()
. - Fix GH-9710: phpdbg memory leaks by option "-h"
- Fix phpdbg segmentation fault in case of malformed input
Posix
- Fix memory leak in
posix_ttyname()
Standard
- Fix GH-10187 (Segfault in
stripslashes()
with arm64). - Fix substr_replace with slots in repl_ht being UNDEF.
TSRM
- Fixed Windows
shmget()
wrt. IPC_PRIVATE.
XMLWriter
- Fix missing check for xmlTextWriterEndElement
Commit List
Alex Dowad
- Support Microsoft's "Best Fit" mappings for Windows-1252 text encoding in a1a69c3734
- Correct entry for 0x80,0xFD-FF in SJIS multi-byte character length table in d104481af8
- Use different mblen_table for different SJIS variants in 3152b7b26f
Arnaud Le Blanc
- GC fiber unfinished executions in GH-9810
- Reduce HT_MAX_SIZE to account for the max load factor of 0.5 in GH-10242
- Fix
run-tests.php
hanging when a worker process dies without notice in GH-9931 - Handle non-INDIRECT symbol table entries in
zend_fiber_object_gc()
in GH-10386
Ben Ramsey
- Update NEWS in 275bf3beae
Christoph M. Becker
- Fix GH-9949: Partial content on incomplete POST request in aef7d810d3
- Fix GH-10112: LDAP\Connection::__construct() refers to
ldap_create()
in b8ac2071b8 - Fix #81740:
PDO::quote()
may return unquoted string in 921b6813da - Skip newly added test on 32bit platforms in cf5dac07d2
- Force extension loading for new test in da5cbca23e
- Adapt
ext/intl
tests for ICU 72.1 in a9e7b90cc2
Daniel Black
ext/mysqli
tests "using password" optional in error messages (part 2) in c21a5920ac
Derick Rethans
- Fix GH-9891: DateTime modify with unixtimestamp (@) must work like setTimestamp in d19a70c9a0
- Fix GH-10072: PHP crashes when execute_ex is overridden and a __call trampoline is used from internal code in 233ffccc35
- Make sure to disable JIT when overriding execute_ex in b489e0f2b8
- Fixed GH-10218: DateTimeZone fails to parse time zones that contain the "+" character in d12ba111e0
Dmitry Stogov
- Fix memory leak in 683285165e
- Fix incorrect optimization of ASSIGN_OP may lead to incorrect result (sub assign -> pre dec conversion for null values) in 4d4a53beee
- Revert "Merge branch 'PHP-8.0' into PHP-8.1" in 0d011e4626
- Fix GH-10271: Incorrect arithmetic calculations when using JIT in 42eed7bb4e
Gabriel Caruso
- Revert "Make build work with newer OpenSSL" in 255e08ac56
George Peter Banyard
- Add secondary test that registers a trampoline as a shutdown function in 44add3c791
- Fix memory leak in
posix_ttyname()
in c2b0be5570
Jakub Zelenka
- Fix GH-9981: FPM does not reset fastcgi.error_header in a3891d9d1a
- Fix bug #67244: Wrong owner:group for listening unix socket in 120aafcc42
- Fix missing comment in FPM
www.c
onf.in in 7d98e3e40c
Kévin Dunglas
- fix: indirect_return compilation warning in 55514a1119
Max Kellermann
- ext/opcache/jit/
zend_jit
: fix inverted bailout value inzend_runtime_jit()
in GH-10144 - ext/opcache/jit: handle
zend_jit_find_trace()
failures in b26b758952 - ext/opcache/jit/
zend_jit_trace
: add missing lock for EXIT_INVALIDATE in e217138b40 - ext/opcache/jit/
zend_jit_trace
: fix memory leak in_compile_root_trace()
in GH-10146
Niels Dossche
- Initialize ping_auto_globals_mask to prevent undefined behaviour in c4487b7a12
- Add a regression test for auto_globals_jit=0 with preloading on in bbad29b9c1
- Fix undefined behaviour in phpdbg_load_module_or_extension in 5f1311a92c
- Fix null pointer dereference of param in 3a44c78f14
- Fix GH-10187: Segfault in
stripslashes()
with arm64 in 4c9375e504 - Fix GH-10202: posix_getgr(gid|nam)_basic.phpt fail in d5f0362e59
- Fix GH-9710: phpdbg memory leaks by option "-h" in 8ff2b6abb2
- Fix GH-10251: Assertion `(flag & (1<<3)) == 0' failed in d03025bf59
- Fix GH-10249: Assertion `size >= page_size + 1 * page_size' failed in 833b45ac44
- Fix substr_replace with slots in repl_ht being UNDEF in 4bbbe6d652
- Fix missing check for xmlTextWriterEndElement in 11a1feb0d7
- Fix wrong flags check for compression method in
phar_object.c
in 347b7c3628 - Fix incorrect comparison in block optimization pass in dfe9c2af19
- Fix phpdbg segmentation fault in case of malformed input in 398a10a58a
- Handle exceptions from __toString in XXH3's initialization in 7463e70b1e
Patrick Allaert
- Update versions for PHP 8.1.15 in 010300fb6b
Stanislav Malyshev
- Make build work with newer OpenSSL in 5f90134bb6
- Improve fix for bug #81740 in a6a80eefe0
- Add NEWS in 05c35137cd
Thomas Gerbet
- Use absolute paths in OPCache tests when calling
opcache_compile_file()
in 1f715f5658
Tyson Andre
- Fix Windows
shmget()
wrt. IPC_PRIVATE in 7a983e281c