PHP 8.1.23: Downloads, Changelog, News

Release Information

Release
8.1.23
PHP Version
PHP 8.1
Release Date
Release Type
Bug Fix Release
Release Status
Use PHP 8.1.24 instead
Branch Status
Supported

PHP 8.1.23 is an old release of PHP 8.1 series. Using the latest version PHP 8.1.24 is highly recommended.
PHP 8.1 continues to receive bug fixes and security fixes until 2023-11-25.

Downloads

Source Code

Git Clone
Use Git to clone the 8.1.23 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.1.23
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (./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.
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.

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.1.23-cli-alpine

Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.1.23-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.1.23-fpm-alpine

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.1.23-apache

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.1.23-fpm

ChangeLog

CLI

  • Fixed bug GH-11716 (cli server crashes on SIGINT when compiled with ZEND_RC_DEBUG=1).
  • Fixed bug GH-10964 (Improve man page about the built-in server).

Core

  • Fixed strerror_r detection at configuration time.

Date

  • Fixed bug GH-11416: Crash with DatePeriod when uninitialised objects are passed in.

DOM

  • Fix DOMEntity field getter bugs.
  • Fix incorrect attribute existence check in DOMElement::setAttributeNodeNS.
  • Fix DOMCharacterData::replaceWith() with itself.
  • Fix empty argument cases for DOMParentNode methods.
  • Fixed bug GH-11791 (Wrong default value of DOMDocument::xmlStandalone).
  • Fix json_encode result on DOMDocument.
  • Fix manually calling __construct() on DOM classes.
  • Fixed bug GH-11830 (ParentNode methods should perform their checks upfront).
  • Fix segfault when DOMParentNode::prepend() is called when the child disappears.

FFI

  • Fix leaking definitions when using FFI::cdef()->new(...).

MySQLnd

  • Fixed bug GH-11440 (authentication to a sha256_password account fails over SSL).
  • Fixed bug GH-11438 (mysqlnd fails to authenticate with sha256_password accounts using passwords longer than 19 characters).
  • Fixed bug GH-11550 (MySQL Statement has a empty query result when the response field has changed, also Segmentation fault).
  • Fixed invalid error message "Malformed packet" when connection is dropped.

Opcache

  • Fixed bug GH-11715 (opcache.interned_strings_buffer either has no effect or opcache_get_status() / phpinfo() is wrong).
  • Avoid adding an unnecessary read-lock when loading script from shm if restart is in progress.

PCNTL

  • Revert behaviour of receiving SIGCHLD signals back to the behaviour before 8.1.22.

SPL

  • Fixed bug #81992 (SplFixedArray::setSize() causes use-after-free).

Standard

  • Prevent int overflow on $decimals in number_format.
  • Fixed bug GH-11870 (Fix off-by-one bug when truncating tempnam prefix)

Commit List

Alexandre Daubois

Athos Ribeiro

  • Fix off-by-one bug when truncating tempnam prefix in cbfd73765a

David CARLIER

  • ci update freebsd image to the 13.2 image in GH-11110

Derick Rethans

Dmitry Stogov

  • Fixed incorrect QM_ASSIGN elimination in 9fc0eab4b4
  • Fixed incorrect QM_ASSIGN elimination in b5f8a7270a
  • Fixed incorrect tracked malloc deallocation in 4553258df3

George Peter Banyard

Ilija Tovilo

  • Fix leaking definitions on FFI::cdef()->new() in 11d6bea98a
  • Replace xfail with skipif in calendar_clear_variation1.phpt in 6b6a5cd28e
  • Fix zend/test arginfo stub hash in e61dbe54e9
  • Fix use-of-uninitialized-value in start_fake_frame in ed27d70d9a
  • Don't test macOS & i386 without opcache on push in 5cd0208e9f
  • 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
  • Use per-branch matrix for windows nightly in 902d39d57c

Kamil Tekiela

Kévin Dunglas

  • fix: handle the GNU specific version of strerror_r in 96885bc04f

Marc Bennewitz

  • Prevent int overflow on $decimals in number_format in 429f20e981

Mikhail Galanin

  • Check if restart is pending before trying to lock SHM in 3e9792f4a2

Máté Kocsis

  • Fix return type of odbc_data_source() in 77252afaf0

nielsdos

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
  • 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 DOM test in bed0e54104
  • 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
  • Fix json_encode result on DOMDocument in 6e468bbd3b
  • 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
  • Fix manually calling __construct() on DOM classes in 08c4db7f36
  • Fix GH-11830: ParentNode methods should perform their checks upfront in dddd309da4
  • Fix viable next sibling search for replaceWith in df6e8bd4fd
  • Fix segfault when DOMParentNode::prepend() is called when the child disappears in d19e4da125
  • Fix #81992: SplFixedArray::setSize() causes use-after-free in b71c6b2c6c

Patrick Allaert

Pierrick Charron

  • Fix wrong backporting of previous soap patch in 32c7c433ac

Yurun

  • Fix MySQL Statement has a empty query result when the response field has changed, also Segmentation fault in ca5d48213a
Subscribe to PHP.Watch newsletter for monthly updates

You will receive an email on last Wednesday of every month and on major PHP releases with new articles related to PHP, upcoming changes, new features and what's changing in the language. No marketing emails, no selling of your contacts, no click-tracking, and one-click instant unsubscribe from any email you receive.