PHP 8.0.3: 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.3 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.3 tag from the PHP Git repository.
git clone --depth 1 --branch php-8.0.3
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.3-cli-alpine

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

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



  • Fixed #80706 (mail(): Headers after Bcc headers may be ignored).


  • Fixed bug #80600 (DOMChildNode::remove() doesn't work on CharacterData nodes).


  • Fixed bug #53251 (bindtextdomain with null dir doesn't return old value).


  • Fixed bug #78680 (mysqlnd's mysql_clear_password does not transmit null-terminated password).
  • Fixed bug #80713 (SegFault when disabling ATTR_EMULATE_PREPARES and MySQL 8.0).


  • Fixed bug #74779 (x() and y() truncating floats to integers).


  • Fixed bug #80634 (write_property handler of internal classes is skipped on preloaded JITted code).
  • Fixed bug #80682 (opcache doesn't honour pcre.jit option).
  • Fixed bug #80742 (Opcache JIT makes some boolean logic unexpectedly be true).
  • Fixed bug #80745 (JIT produces Assert failure and UNKNOWN:0 var_dumps in code involving bitshifts).


  • Fixed bug #80747 (Providing RSA key size < 512 generates key that crash PHP).


  • Fixed bug #75850 (Unclear error message wrt. __halt_compiler() w/o semicolon)
  • Fixed bug #70091 (Phar does not mark UTF-8 filenames in ZIP archives).
  • Fixed bug #53467 (Phar cannot compress large archives).


  • Fixed bug #80723 (Different sockets compare as equal (regression in 8.0)).


  • Fixed bug#80719 (Iterating after failed ArrayObject::setIteratorClass() causes Segmentation fault).


  • Fixed bug #80654 (file_get_contents() maxlen fails above (2**31)-1 bytes).
  • Fixed bug #80718 (ext/standard/dl.c fallback code path with syntax error).

Commit List

Alex Samorukov

  • Fix opcache phpize build on FreeBSD in 527bcb1e2e

Benjamin Eberlei

Christoph M. Becker

Daniel Black


Derick Rethans

Dmitry Stogov

  • Fixed bug #80634 (write_property handler of internal classes is skipped on preloaded JITted code) in 6288228b56
  • Skip dummy frames allocated on CPU stack of zend_call_function() in 094e1a8b2d
  • Allow observer handlers disabling optimization in RETURN opcode handler, that may cause loss value of returned local variable in b529d02d24
  • Fixed observer API and JIT compatibility in 64622979f9
  • Fixed bug #80742 (Opcache JIT makes some boolean logic unexpectedly be true) in fad87a24da
  • Fixed bug #80745 (JIT produces Assert failure and UNKNOWN:0 var_dumps in code involving bitshifts) in 7f68a7afe6

Dylan T

  • Remove generated zend_jit_x86.c on make clean in 408272b8d9

Gabriel Caruso

Michael Voříšek

  • Fix stub for Serializable::serialize() in 27eb81604b

Máté Kocsis

Nikita Popov

  • Skip preloading test on windows in 286c13e1e6
  • Improve switch continue warning in 18507853cb
  • Fix VAR return type verification in a2dcd44272
  • Fix build in ab8177de2c
  • Fix Laravel build on community job in 217b9e7b41
  • XFAIL observer_error_05.phpt test in cab1ea46e7
  • Fix persistent leak on load_wsdl_ex failure in 51d76c346e
  • Add missing derefs in CurlFile in 54fa0a69f8
  • Remove unnecessary cast in snmp_set_oid_output_format in b20362c24b
  • Fix newly introduced compiler warning in 06c9633b43
  • Fix CLI server worker support in 5cb25a2d32
  • Try SIGTERM before SIGKILL in opcache restart in 8b7aaad7d6
  • Restore Laravel test workaround in e2c30c6a2e
  • Make getElementsByTagNameNS $namespace nullable in ab92ffee22
  • Make createDocument() $namespace nullable in 3549f48edc
  • Make Phar $fileNotFoundScript nullable in 44192ce80b
  • Make IntlDateFormatter ctor $pattern nullable in 186f9bab45
  • Make NumberFormatter ctor $pattern nullable in f5768eaa2e
  • Use E_ERROR to report arginfo/zpp mismatch in d4aff25473
  • Make imagegd $file parameter nullable in 838ae016d7
  • Properly check imagegd() signature in 57cb01a927
  • Make SoapVar arguments nullable in 32d128d219
  • Accept null $location in SoapClient::__setLocation() in 788abb8cc8
  • Regenerate arginfo file in cff35ca0b2
  • Clarify that location is required in do_request in 40ba9f6a1a
  • Don't pass null action to __doRequest in ce7935e82a
  • Make finfo_open() $magic_database nullable in fd5ff37db7
  • Make mysqli_ssl_set() arguments nullable in 39c6aaa9cc
  • Don't throw additional Error in require_once if exception already thrown in d80d918547
  • Don't return null from password_get_info() in cec5e30889
  • Update func info after password_get_info() change in 7215261349
  • Fixed bug #80719 in c34c523467
  • Fixed bug #80718 in 5199686873
  • Fix leak when breaking out of FilesystemIterator in 44a80b64b9
  • Fix assertion failure in cufa optimization with named args in c70220205e
  • Fix symtable cache being used while cleaning symtable in 7b7d99839c
  • Fixed bug #80747 in 64b1085464
  • Suppress OpenSSL error on missing optional config in 7566742754
  • Increase timeout on asan job in 2d7ada2c0b
  • Fixed bug #80723 in cb9785add1
  • Mark resource-like objects as non-comparable in b63ea1047a
  • Handle incomplete result set metadata more gracefully in 9552cf6b84

Peter Kokot

Remi Collet

Sammy Kaye Powers

Sara Golemon

Stanislav Malyshev

Tyson Andre

  • Properly render 2+ namespaces functions in build/gen_stub.php in 5e06dad411
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.