PHP 8.0.1: Downloads, Changelog, News

Release Information

PHP Version
PHP 8.0
Release Date
Release Type
Security Update
Release Status
EOL, Use PHP 8.0.30
Branch Status

PHP 8.0 reached EOL on , and all releases of this version no longer receive security or bug fixes. Using PHP 8.0.1 is not recommended. PHP 8.0.30 is the latest version in the series.


Source Code

Git Clone
Use Git to clone the 8.0.1 tag from the PHP Git repository.
git clone --depth 1 --branch php-8.0.1
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 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.0.1-cli-alpine

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

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

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



  • Fixed bug #80345 (PHPIZE configuration has outdated PHP_RELEASE_VERSION).
  • Fixed bug #72964 (White space not unfolded for CC/Bcc headers).
  • Fixed bug #80391 (Iterable not covariant to mixed).
  • Fixed bug #80393 (Build of PHP extension fails due to configuration gap with libtool).
  • Fixed bug #77069 (stream filter loses final block of data).


  • Fixed bug #77961 (finfo_open crafted magic parsing SIGABRT).


  • Fixed bug #69625 (FPM returns 200 status on request without SCRIPT_FILENAME env).


  • Fixed bug #80438 (imap_msgno() incorrectly warns and return false on valid UIDs in PHP 8.0.0).
  • Fix a regression with valid UIDs in imap_savebody()
  • Make warnings for invalid message numbers/UIDs between functions consistent


  • Fixed bug #80425 (MessageFormatAdapter::getArgTypeList redefined).


  • Create Windows DLLs for Oracle Client 19c.


  • Fixed bug #80404 (Incorrect range inference result when division results in float).
  • Fixed bug #80377 (Opcache misses executor_globals).
  • Fixed bug #80433 (Unable to disable the use of the AVX command when using JIT).
  • Fixed bug #80447 (Strange out of memory error when running with JIT).
  • Fixed bug #80480 (Segmentation fault with JIT enabled).
  • Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1)).


  • Fixed bug #80368 (OpenSSL extension fails to build against LibreSSL due to lack of OCB support).


  • Fixed bug #80458 (PDOStatement::fetchAll() throws for upsert queries).
  • Fixed bug #63185 (nextRowset() ignores MySQL errors with native prepared statements).
  • Fixed bug #78152 (PDO::exec() - Bad error handling with multiple commands).
  • Fixed bug #66878 (Multiple rowsets not returned unless PDO statement object is unset()).
  • Fixed bug #70066 (Unexpected "Cannot execute queries while other unbuffered queries").
  • Fixed bug #71145 (Multiple statements in init command triggers unbuffered query error).
  • Fixed bug #76815 (PDOStatement cannot be GCed/closeCursor-ed when a PROCEDURE resultset SIGNAL).
  • Fixed bug #79872 (Can't execute query with pending result sets).
  • Fixed bug #79131 (PDO does not throw an exception when parameter values are missing).
  • Fixed bug #72368 (PdoStatement->execute() fails but does not throw an exception).
  • Fixed bug #62889 (LOAD DATA INFILE broken).
  • Fixed bug #67004 (Executing PDOStatement::fetch() more than once prevents releasing resultset).
  • Fixed bug #79132 (PDO re-uses parameter values from earlier calls to execute()).


  • Fixed bug #73809 (Phar Zip parse crash - mmap fail).
  • Fixed bug #75102 (PharData says invalid checksum for valid tar).
  • Fixed bug #77322 (PharData::addEmptyDir('/') Possible integer overflow).


  • Fixed bug #76813 (Access violation near NULL on source operand).


  • Fixed #62004 (SplFileObject: fgets after seek returns wrong line).


  • Fixed bug #77423 (FILTER_VALIDATE_URL accepts URLs with invalid userinfo). (CVE-2020-7071)
  • Fixed bug #80366 (Return Value of zend_fstat() not Checked).


  • Fixed bug #77594 (ob_tidyhandler is never reset).


  • Fixed bug #80462 (Nullsafe operator tokenize with TOKEN_PARSE flag fails).


  • XmlParser opaque object renamed to XMLParser for consistency with other XML objects.


  • Fixed #48725 (Support for flushing in zlib stream).

Commit List

Ayesh Karunaratne

  • JIT: Update invalid opcache.jit INI value message to include "tracing" and "function" values in 724e241c9d

Benjamin Morel

Calvin Buckley

  • sockets: Fix variable/macro name collision on AIX in e074e029ee
  • IBM i PASE doesn't support ITIMER_PROF in 54248b18fe

Christian Schneider

  • Make is_file() and friends return false when path contains 0-byte in 7bc7a80445

Christopher Jones

Christoph M. Becker

Daniel Black

  • Fix mysqli_get_client_stats test in 4a10037cb4
  • fix mysqli_stmt_get_result_metadata_fetch_field test for mariadb in 5d5c1cea5f
  • Fix mysqli_expire_password test for mariadb in 0697a64f7e

David Carlier


Dmitry Stogov

  • Fixed 32-bit JIT in c8df28d276
  • Fixed incorrect TRACE_FRAME_MASK_NESTED flag setting in c0d1dbcb43
  • Keep value of register before possible side exit in 4cf3da7383
  • Fixed use-after-free in PHPUnit tests in 586ccfdfd5
  • zend_jit_trace_stack_frame.stack can't be NULL in 337d2af6ca
  • Revert "Fixed bug #80377" in 7fc2a3e15e
  • Use diferent temporary register (%r0 may keep a method address) in cb399d0410
  • Eliminate deafd stores in 3697648be5
  • Disable JIT with incompatible third-party extensions in d5a82e2c4e
  • Hide phpdbg/JIT incompatibility macro (JIT is disabled for phpdbg) in a0baa09b99
  • Fixed "may be used uninitialized" compilation warnings in 5f36d0497f
  • Preallocate stack space for JIT in execute_ex() to eliminate JIT prologue/epilogue in 841b00f641
  • Skip test if JIT is not available in 31eafedf2e
  • Fixed incorrect "" include in 4959c60524
  • Disable stack reuse optimization for x86 PIC code. It may clobber local variable used for Global Offset Table in 8ad2b59e12
  • Bug #80447 (Strange out of memory error when running with JIT) in 1674c96c0b
  • Fixed bug #80447 (Strange out of memory error when running with JIT) in 44475e70e2
  • Fixed bug #80480 (Segmentation fault with JIT enabled) in 7971602574
  • Avoid unnecessary checks in db34491a62
  • Fixed IS_32BIT/IS_SIGNED_32BIT mess in 8d268e8443
  • Perform early guard type check for result of FETCH_CONSTANT in e9f9e9f863
  • Eliminate some repeatable IS_REFERENCE checks in dde5572937
  • Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1)) in a12e7affd7
  • Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1)) in 66e390707c
  • Remove unused flag in b3377028dc
  • Optimize out result value of ASSIGN, ASSIGN_OP and INC/DEC opcodes, if possible in de78786566


  • Remove bug41347.phpt as the error cases are already tested in b0e858da8b

Gabriel Caruso

George Peter Banyard

  • Rename XmlParser to XMLParser for consistency with XMLWriter/XMLReader in a55402d07c
  • Fix Bug #80438: imap_msgno() incorrectly warns and return false on valid UIDs in PHP 8.0.0 in 0076b47326
  • Backport IMAP test modernization to PHP-8.0 branch in 5aaffc8095
  • Add tests for passing a UID instead of a message number in e45cc31c41
  • Standardize behaviour for int message number between functions in 426fe2f20c

Jakub Zelenka

  • Fix test for bug62890 to not depend on system cert store in 685708160e
  • Fix bug #69625: FPM returns 200 status on request without SCRIPT_FILENAME in a221e17b41


  • UPGRADING: (real) cast has been removed in 860f46e2f5

Máté Kocsis

  • Remove some incorrect mixed parameter types in 40ebfd6730

Nikita Popov

Paul Crovella

  • Upload coverage data to in 8f8e6f95af

Peter Kokot

Remi Collet

Sara Golemon


  • EXTERN_C wrapping for GC buffer APIs in 26c7b9402d
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.