Release Information
- Release Type
- Security Update
- Release Status
- QA Release
- Branch Status
- Upcoming Release
PHP 8.3 is a development version, and is not recommended for production use. PHP 8.3 is scheduled to reach General Availability on 2023-11-23.
PHP 8.3.0RC3 is the latest QA release in PHP 8.3.
Downloads
Source Code
Git Clone
Use Git to clone the 8.3.0beta2 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.3.0beta2
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (
Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.
./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.
php-8.3.0beta2-x64NTS.zip (30.59 MiB)
php-8.3.0beta2-x86NTS.zip (27.48 MiB)
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.
php-8.3.0beta2-x64TS.zip (30.73 MiB)
php-8.3.0beta2-x86TS.zip (27.46 MiB)
Docker/Podman Containers
PHP CLI
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.3.0beta2-cli-alpine
Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.3.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.3.0beta2-fpm-alpine
Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.3.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.3.0beta2-fpm
ChangeLog
Bcmath
- Fixed GH-11761 (removing trailing zeros from numbers)
Core
- Fixed oss-fuzz #60741 (Leak in
open_basedir
).
DOM
- Fixed bug GH-11792 (LIBXML_NOXMLDECL is not implemented or broken).
FFI
- Fix leaking definitions when using FFI::cdef()->new(...).
Libxml
- Fixed bug GHSA-3qrf-m4j2-pcrr (Security issue with external entity loading in XML without enabling it). (CVE-2023-3823)
MBString
- Fix use-after-free of
mb_list_encodings()
return value.
Opcache
- Avoid adding an unnecessary read-lock when loading script from shm if restart is in progress.
Phar
- Fixed bug GHSA-jqcx-ccgc-xwhv (Buffer mismanagement in
phar_dir_read()
). (CVE-2023-3824)
Streams
- Fixed bug GH-11735 (Use-after-free when unregistering user stream wrapper from itself).
Commit List
Arnaud Le Blanc
- Add AMPHP, ReactPHP, Revolt PHP to community job in GH-10933
Athos Ribeiro
- Fix #79026: Allow
PHP_EXTRA_VERSION
overrides in d35df89c35
David CARLIER
- zend call stack fix freebsd code path. in GH-11766
- zend vm savee registers support for riscv 64. in GH-11773
Derick Rethans
- CS in b669cb4c1b
- Make the new
DatePeriod::createFromISO8601String
method emit DateTimeImmutable objects in 82ff4c5e84 - Fix broken merge in 93b43ac238
- Fixed artifacts from merging in dcc429557d
- Fixed another broken merge (sorry) in 855dd2767a
Dmitry Stogov
- Fixed incorrect QM_ASSIGN elimination in 9fc0eab4b4
- Fixed incorrect QM_ASSIGN elimination in b5f8a7270a
Filip Zrůst
- Improve DTrace probe generation /w non-default compiler in 475fd29527
George Peter Banyard
libxml_get_external_entity_loader()
: test for incompatible resource being loaded in GH-11728- Refactor BCMath bundledlib and extension in GH-10774
ext/mysqli
: Remove customsys_get_temp_dir()
function in 17a80eb08bext/mysqli
: Remove conditional function declaration in 0c21715935ext/mysqli
: Stop using global variable in connection test helper in 8582d97b8cext/mysqli
: Remove catchable fatal error handler in b389846d05
Ilija Tovilo
- Fix use-after-free when unregistering user stream wrapper from itself in c3ccc363c6
- Fix leaking definitions on FFI::cdef()->new() in 11d6bea98a
- Fix merge conflict in ac99f7306c
- Fix
open_basedir
leak in 127ad70782 - Call cast_object handler from get_properties_for in 4182813ebf
- Replace
xfail
withskipif
incalendar_clear_variation1.phpt
in 6b6a5cd28e - Fix uaf of MBSTRG(all_encodings_list) in 7364b7bc0b
- Fix uouv in
array_column
in 2053af6628 - Fix uouv in
password_needs_rehash()
andpassword_hash()
in a145b40fa6 - Fix various uouv in intl in 322da7bcc3
- Fix some uouv in
ext/pgsql
in 82aa4253f1 - Fix zend/test arginfo stub hash in e61dbe54e9
Jakub Zelenka
- Update versions for PHP 8.3.0beta2 in 2fe3332653
Jorg Adam Sowa
Juliette
- GH Actions: auto-skip CI on PRs containing only docs changes in GH-11839
Kamil Tekiela
- Remove unnecessary parentheses around language constructs in oci8 in a53e56176c
- Convert CRLF to LF in c1a085290a
- Remove unnecessary parentheses around language constructs in mysqli in a21edc52aa
- Remove unnecessary parentheses around language constructs in mysqli in 73d6869337
- As of 8.2 this SKIP is no longer possible in 548fc6a818
Marc Bennewitz
- Prevent int overflow on $decimals in number_format in 429f20e981
Michael Orlitzky
- Skip oci8 tests when no database is available in GH-11820
Mikhail Galanin
- Check if restart is pending before trying to lock SHM in 3e9792f4a2
Máté Kocsis
- Use new class synopsis generating markup in GH-11809
Niels Dossche
- Fix GH-11715: opcache.interned_strings_buffer either has no effect or
opcache_get_status()
/phpinfo()
is wrong in ee3f932390 - Fix GH-11716: cli server crashes on SIGINT when compiled with ZEND_RC_DEBUG=1 in af77d3b8da
- Use xmlSetNsProp when possible to prevent parsing the name in c8964b9a08
- Remove useless readonly checks in dbe897b73e
- Simplify configuration getters in GH-11778
- Fix DOMEntity field getter bugs in d439ee18ed
- Fix incorrect attribute existence check in
DOMElement::setAttributeNodeNS()
in 168bc8146f - Fix
DOMCharacterData::replaceWith()
with itself in 1cf2d216a2 - Fix empty argument cases for DOMParentNode methods in abb1d2e824
- Fix GH-11791: Wrong default value of
DOMDocument::xmlStandalone
in bf4e7bd3ed - Fix GH-11792: LIBXML_NOXMLDECL is not implemented or broken in 4bee5743e9
- Fix DOM test in bed0e54104
- Corrections to return type of loading DOM documents in ae66a0d142
XLEAK
XML_SAVE_NO_DECL test for old libxml2 versions in 655f116be5- Fix buffer mismanagement in
phar_dir_read()
in 80316123f3 - Sanitize libxml2 globals before parsing in c283c3ab0b
- Disable global state test on Windows in 62228a2568
- NEWS in d8f2584ebb
Peter Kokot
- Remove unused
PHP_HASH
variable in GH-11653 - Remove check for
time.h
and HAVE_TIME_H in GH-11726 - Remove unused
ZEND_STACK_GROWS_DOWNWARDS
constant in GH-11762 - Move
--enable
/--disable-fiber-asm
help output in GH-11827
Pierrick Charron
- Fix wrong backporting of previous soap patch in 32c7c433ac
Remi Collet
- cast _private to avoid [-fpermissive] error in fde4386648
- add
ZipArchive::LENGTH_TO_END
andZipArchive::LENGTH_UNCHECKED
constants in 0893b4bed5 - use typed constants in 8.3 in ae3646db48