PHP 8.0.2: Downloads, Changelog, News

Release Information

PHP Version
PHP 8.0
Release Date
Release Type
Bug Fix Release
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.2 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.2 tag from the PHP Git repository.
git clone --depth 1 --branch php-8.0.2
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.2-cli-alpine

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

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.0.2-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.2-fpm



  • Fixed bug #80523 (bogus parse error on >4GB source code).
  • Fixed bug #80384 (filter buffers entire read until file closed).
  • Fixed bug #80596 (Invalid union type TypeError in anonymous classes).
  • Fixed bug #80617 (GCC throws warning about type narrowing in ZEND_TYPE_INIT_CODE).


  • Fixed bug #80545 (bcadd('a', 'a') doesn't throw an exception).


  • Fixed bug #80595 (Resetting POSTFIELDS to empty array breaks request).


  • Fixed bug #80376 (last day of the month causes runway cpu usage).


  • Fixed bug #80537 (Wrong parameter type in DOMElement::removeAttributeNode stub).


  • Fixed bug #80584 (0x and 0X are considered valid hex numbers by filter_var()).


  • Fixed bug #80560 (Strings containing only a base prefix return 0 object).


  • Fixed bug #80644 (Missing resource causes subsequent get() calls to fail).


  • Fixed bug #67983 (mysqlnd with MYSQLI_OPT_INT_AND_FLOAT_NATIVE fails to interpret bit columns).
  • Fixed bug #64638 (Fetching resultsets from stored procedure with cursor fails).
  • Fixed bug #72862 (segfault using prepared statements on stored procedures that use a cursor).
  • Fixed bug #77935 (Crash in mysqlnd_fetch_stmt_row_cursor when calling an SP with a cursor).


  • Fixed bug #80592 (all floats are the same in ODBC parameters).


  • Fixed bug #80422 (php_opcache.dll crashes when using Apache 2.4 with JIT).


  • Fixed bug #80521 (Parameters with underscores no longer recognized).


  • Fixed bug #76929 (zip-based phar does not respect phar.require_hash).
  • Fixed bug #77565 (Incorrect locator detection in ZIP-based phars).
  • Fixed bug #69279 (Compressed ZIP Phar extractTo() creates garbage files).


  • Reverted fix for bug #76813 (Access violation near NULL on source operand).

Commit List

Adam Seitz

Christopher Jones

Christoph M. Becker

  • Fix #80521: Parameters with underscores no longer recognized in 1860ef22eb
  • Fix ext/date stubs in 3c68f43251
  • DateTime:: and DateTimeImmutable::getTimestamp() may return false in b67c232189
  • Revert "DateTime:: and DateTimeImmutable::getTimestamp() may return false" in 32c6c29d79
  • DateTime*::getOffset() no longer returns false as of PHP 8.0.0 in 269936e680
  • php_formatted_print() throws on failure in 45b638afe0
  • Bump minimum re2c version to 0.13.7 in 420184ad52
  • Fix ffi stubs in 13f898b56a
  • Fix ReflectionClass::getConstants() stub in 82f9e004da
  • Fix build in b2fba0ef62
  • Fix parameter name in cae0bcbab5
  • Fix #77423: parse_url() will deliver a wrong host to user in 2d3d72412a
  • ZipArchive methods do not return NULL in e470f9b389
  • Fix imap stubs in aab23282fc
  • Fix #77423: parse_url() will deliver a wrong host to user in b132da7f9d
  • SQLite3::query() cannot return null in abe23bd9a3
  • Fix #76929: zip-based phar does not respect phar.require_hash in 9f96b2bdc8
  • Fix memory leak in Phar::webPhar() on Windows in 5c963731e2
  • Prevent double-free of Phar ZIP stream in b7689db7ab
  • Fix #77565: Incorrect locator detection in ZIP-based phars in d1b1c04398
  • Add missing SKIPIF clause for require_hash.phpt in 90081c5391
  • Fix #80592: all floats are the same in ODBC parameters in f674a3343c
  • Avoid modifying the return value of readline_completion_function() in 9450893dc6
  • Revert "Fix #76813: Access violation near NULL on source operand" in 25103c37aa
  • Revert fix for bug 76813 and re2c version bump in 95a13ca989
  • socket_create_pair() can no longer return NULL in 41e9a8ebdc
  • Fix #80595: Resetting POSTFIELDS to empty array breaks request in 38ad37ad43
  • Fix #69279: Compressed ZIP Phar extractTo() creates garbage files in 68f5289e9e
  • ldap_search() and friends can return array in f33105dcb6
  • Alternative fix for bug 77423 in 605d9f55ad

Daniil Gentili


Derick Rethans


Dmitry Stogov

  • Eliminate redundand comparison insructions in 23bbff2b05
  • Reuse value stored in %r0 instead of immediate operand in 56fde2a381
  • Initialize EX(call)->func by single instruction in da0ca53f39
  • Add guard if lvalue of assignment may be a reference, but wasn't a reference during recording in 35e0506a2e
  • Fixed bug #80422 (php_opcache.dll crashes when using Apache 2.4 with JIT) in 3edf5c969a

Dylan K. Taylor

  • gdbinit: use ____print_str to print htable keys in 6b631f073d
  • Fix stub for Phar::setStub() in 0aad77418d
  • Keep JIT region executable under ZTS in 872f302b8d

Gabriel Caruso

George Peter Banyard

  • Fix #80560: Strings containing only a base prefix return 0 object in abecaab09f
  • Fix GMP comparison object handler in 1b5c62facd
  • Fix bug #80584: 0x and 0X are considered valid hex numbers by filter_var() in 764b7bf108
  • Rename zip_ent parameter to zip_entry for consistency in f40838eaaa


  • Replace sort() function calls with ksort() in basic ksort test in 0db6f5267c

Jens de Nies

Máté Kocsis

  • Fix the signature of FFI::sizeof() and FFI::alignof() in ed19cb6518
  • Add a few other RETURN_THROWS() in c1d766171b
  • Fix the signature of FFI::typeof() and FFI::memcmp() in ab4c5976d7
  • Add support for generating methodsynopses from stubs in 9cec093b7f
  • Fix return type of DateTimeImmutable::__set_state() in 46a2c6a8d7
  • Fix refentry attribute replacing in 446ad04524
  • Use RETURN_THROWS() in a few places in b23c865d15

Nikita Popov

  • Fix bug #80523 in 118ff03335
  • Fixed bug #67983 in 315f3f8dc9
  • PDO MySQL: Use mysqlnd column names in 205d209de9
  • Detect overlarge step for character range() in c56701690a
  • MySQLnd: Support cursors in store/get result in bc166844e3
  • PDO MySQL: Handle boolean parameter binding with libmysql in 51f57e7b81
  • Fix bug #80537 in 27e250880b
  • Disable non-cron travis jobs in 46d6daea7a
  • Throw ValueError instead of TypeError for malformed GMP number in 65f14b0d6c
  • Try to fix intermittent failures of stream_server_reneg_limit.phpt on macos in af7445b9ac
  • Fix newly added GMP test in 821eaaf0b4
  • Fix infinite recursion in unlinked_instanceof in dd335359e9
  • Use ephemeral port in socket_create_listen_used.phpt in bc0f78a2da
  • Add support for union types for internal functions in 973138f39d
  • Fixed bug #80617: Type narrowing warning in ZEND_TYPE_INIT_CODE in 880bf62224
  • Fix parameter name of PharData::getMetadata() in 48e2e5324e
  • Sync date_diff and DateTime::diff return type in c31f9f7ee4
  • Sync intlcal_create_instance() and IntlCalendar::createInstance() in 39077deea5
  • Sync datefmt_get_calendar_object signature in ebf461a025
  • Sync gzgets signature with fgets in 7290dc4dcf
  • SplFileObject::fgets() cannot return false in f2364f316d
  • Disable opcache optimizations during some observer tests in dd7d829896
  • Observe unused return values in JIT in fbd8e20ed5
  • Fixed bug #80644: ResourceBundle::get() doesn't reset error state in 05d168013a
  • Fix observer tests on Windows in f3415758d1
  • Fix build in 3424432ec9

Semen Dubina


Stanislav Malyshev

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.