Release Information
- Release Type
- Bug Fix Release
- 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.0beta3 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.3.0beta3
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.0beta3-x64NTS.zip (30.59 MiB)
php-8.3.0beta3-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.0beta3-x64TS.zip (30.73 MiB)
php-8.3.0beta3-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.0beta3-cli-alpine
Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.3.0beta3-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.0beta3-fpm-alpine
Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.3.0beta3-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.0beta3-fpm
ChangeLog
Core
- Fixed strerror_r detection at configuration time.
- Fixed segfault during freeing of some incompletely initialized objects due to OOM error (PDO, SPL, XSL).
- Fixed trait typed properties using a DNF type not being correctly bound.
- Fixed trait property types not being arena allocated if copied from an internal trait.
- Fixed deep copy of property DNF type during lazy class load.
- Fixed memory freeing of DNF types for non arena allocated types.
DOM
- adoptNode now respects the strict error checking property.
- Align DOMChildNode parent checks with spec.
- Fixed bug #80927 (Removing documentElement after creating attribute node: possible use-after-free).
- Fix various namespace prefix conflict resolution bugs.
- Fix calling createAttributeNS() without prefix causing the default namespace of the element to change.
Opcache
- Avoid resetting JIT counter handlers from multiple processes/threads.
Standard
- Fixed bug GH-11870 (Fix off-by-one bug when truncating tempnam prefix)
Commit List
Alexandre Daubois
- Fix GH-10964: Improve
man
page about the built-in server in 997a36750b - Improve database naming in
ext/pdo_pgsql
for better para-tests in GH-11872 ext/pdo_pgsql
: Improve tests cleanup in GH-11855- Improve
ext/pdo_sqlite
tests cleanup in GH-11900
Arne_
- Allow easter_date to process years after 2037 on 64bit systems in GH-11862
Athos Ribeiro
- Fix off-by-one bug when truncating tempnam prefix in cbfd73765a
Ayesh Karunaratne
- Fix DateTime exception hierarchy for DateInvalidTimeZoneException in GH-11970
Cristian Rodríguez
- Use
zend_ast_size
consistenly in GH-11955
David CARLIER
- ci update freebsd image to the 13.2 image in GH-11110
Derick Rethans
- Import timelib 2022.09 in 851890bd9c
- Fixed bug GH-11854 (DateTime:createFromFormat stopped parsing datetime with extra space) in a8f4171655
- Fix GH-11416: Crash with DatePeriod when uninitialised objects are passed in in 4833b84854
- Fix GH-11416: Crash with DatePeriod when uninitialised objects are passed in (PHP 8.2+) in b71d2e16e6
- Update initialisation check for new PHP-8.3 API in e157da11f3
Dmitry Stogov
- Fixed incorrect tracked malloc deallocation in 4553258df3
Eric Mann
- Update versions for PHP 8.3.0beta3 in 4733be4439
George Peter Banyard
- Fix OSS-fuzz #60709 unseting op via globals in 6ae9cf40d1
- Fix OSS Fuzz #60734: use-after-free visible in ASAN build in 2fbec0974f
- Zend: Fix memory leak in ++/-- when overloading fetch access in fc3df283fb
- ext/
zend_test
: Move object handler test objects to their own file in GH-11852 - Fix
skipif
condition on new test in 4cbc66d5e6 - Fix various bugs related to DNF types in 02a80c5b82
Ilija Tovilo
- Remove
opcache.c
onsistency_checks in b2dbf0a2c6 - Unpoison opcache mem buf for file cache checksum calc in 35862641ba
- Fix use-of-uninitialized-value in start_fake_frame in ed27d70d9a
- Add block size support for tracked_malloc in GH-11856
- Synchronize
zend_jit_stop_counter_handlers()
in b80bebc278 - Add typed specialization for
ZEND_COUNT
in GH-11825 - Assert ptr_ptr value of TMP|CONST isn't used in GH-11865
- Don't test macOS & i386 without opcache on push in 5cd0208e9f
- Revert "Call cast_object handler from get_properties_for" in efc73f24c3
- Move opnum_start for goto for clarification in GH-11911
- Move ASAN built to GitHub actions in fc9266a5fc
- Fix
curl_basic_009.phpt
for newer curl versions in 3af76b2302 - Fix EXPECT for
bug52820.phpt
on newer curl versions in 0e843c5d82 - Add Windows build to nightly in 90f514cf21
- Remove i386 Linux from push in 248e6b0404
- Fix uouv on oom on object allocation in ee000ea186
- Use per-branch matrix for windows nightly in 902d39d57c
Jorg Adam Sowa
- BCmath extension code reformatting in GH-11896
Kamil Tekiela
- Remove unnecessary requires in mysqli tests in af4eabd8c9
- Improve test for mysqli_result constructor in 1451b9e6f2
- Tidy up new my_mysqli in tests in aab36a774a
- Revert changes to
mysqli_get_connection_stats.phpt
in 0c288c4098 - Remove unused CLEAN section in ab46d2012c
- Add DROP TABLE to clean up after the test in 66b359e4de
- Remove remnant of COM_FIELD_LIST in 788540ef2c
- Fix error checking in mysqlnd in 0d922aa595
- Align highlight_string|file with HTML standard and modern browsers in f907a009f9
- mysqli_field_seek return type changed to true in GH-11948
Kévin Dunglas
- fix: handle the GNU specific version of strerror_r in 96885bc04f
Levi Morrison
- Add
php_version
andphp_version_id
PHPAPI funcs in GH-11875
Michael Orlitzky
ext/dba/tests/dba_tcadb.phpt
: support pthreadless tokyocabinet in GH-11648
Mikhail Galanin
- Add "revalidate" time to opcache scripts list in 958a25e22e
Máté Kocsis
- Fix return type of
odbc_data_source()
in 77252afaf0 - Make the $enable parameter of
odbc_autocommit()
nullable in GH-11909 - Align the return type of
snmp_set_oid_numeric_print()
to its aliased funtion in 67ab2b7d87
nielsdos
- Fix GH-11440: authentication to a sha256_password account fails over SSL in 94127c53aa
Niels Dossche
- Fix json_encode result on DOMDocument in 6e468bbd3b
- Respect strict error setting for adoptNode in fa397e0217
- Deduplicate loading code in 04df77650d
- Handle strict error properly in adoptNode failure, and add a test in 6f6fedcb46
- Fix GH-11438: mysqlnd fails to authenticate with sha256_password accounts using passwords longer than 19 characters in 509906b2a5
- Fix missing link variable in test in 162bd2a58a
- Revert the fix for GH-11498 in f7be15dbad
- Mark buildFromIterator test as conflicting in dc586b121a
- Remove useless check in 872bf56fed
- Make
DOMChildNode::remove()
run in O(1) performance in e701b2fee7 - Fix manually calling __construct() on DOM classes in 08c4db7f36
- Fix GH-11830: ParentNode methods should perform their checks upfront in dddd309da4
- Remove useless hashmap check in 5018dfecdf
- Fix viable next sibling search for replaceWith in 815b5ad501
- Fix viable next sibling search for replaceWith in df6e8bd4fd
- Fix segfault when
DOMParentNode::prepend()
is called when the child disappears in d19e4da125 - Align DOMChildNode parent checks with spec in 23ba4cde53
- Optimize checks for DOMParentNode and DOMChildNode in 620b6220c2
- Fix #80927: Removing documentElement after creating attribute node: possible use-after-free in bb092ab4c6
- GH-11964: In ext/date/php_date.
stub.php
, DateRangeError extends itself in 17b3af2958 - Fix #81992:
SplFixedArray::setSize()
causes use-after-free in b71c6b2c6c
Peter Kokot
- Remove unused HAVE_GCC_GLOBAL_REGS shell variable in GH-11877
Yurun
- Fix MySQL Statement has a empty query result when the response field has changed, also Segmentation fault in ca5d48213a