PHP 8.0 is currently only receiving security fixes. PHP 8.0.3 is not the latest version in the series, and using this release is not recommended. PHP 8.0.30 is the latest in the series.
Downloads
Source Code
Git Clone
Use Git to clone the 8.0.3 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.0.3
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.0.3-x64NTS.zip (25.33 MiB)
php-8.0.3-x86NTS.zip (23.36 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.0.3-x64TS.zip (25.44 MiB)
php-8.0.3-x86TS.zip (23.42 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.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
ChangeLog
Core
- Fixed #80706 (
mail()
: Headers after Bcc headers may be ignored).
DOM
- Fixed bug #80600 (
DOMChildNode::remove()
doesn't work on CharacterData nodes).
Gettext
- Fixed bug #53251 (bindtextdomain with null dir doesn't return old value).
MySQLnd
- 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).
MySQLi
- Fixed bug #74779 (x() and y() truncating floats to integers).
Opcache
- 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).
OpenSSL
- Fixed bug #80747 (Providing RSA key size < 512 generates key that crash PHP).
Phar
- 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).
Socket
- Fixed bug #80723 (Different sockets compare as equal (regression in 8.0)).
SPL
- Fixed bug#80719 (Iterating after failed
ArrayObject::setIteratorClass()
causes Segmentation fault).
Standard
Commit List
Alex Samorukov
- Fix opcache phpize build on FreeBSD in 527bcb1e2e
Benjamin Eberlei
- Fix bug #80600
DOMChildNode::remove
does not work on DOMCharacterData in 665e1f324a - Fixed bug #80600 in 6ec25f386f
Christoph M. Becker
- Add missing
SKIPIF
clauses to new test cases in 4c1b3e3036 - Fix #80648: Fix for bug 79296 should be based on runtime version in 6adfb8c962
- Add missing
SKIPIF
clause for recently introduced test case in edb389730d - Add missing stub for com_exception in bff7761653
- Add missing stub for SNMPException in a86443f5a3
- Fix #53251: bindtextdomain with null dir doesn't return old value in d319098b24
- Fix #75850: Unclear error message wrt. __halt_compiler() w/o semicolon in 61ed904cec
- Update version in 94af11d5e1
- Fix #70091: Phar does not mark UTF-8 filenames in ZIP archives in 6a0b889f57
- Alternative fix for bug 77423 in 4a89e726bd
- Add missing stub for SodiumException in 49ef8bc026
- Fix #80654:
file_get_contents()
maxlen fails above (2**31)-1 bytes in 7e9479083d - Revert "Updated to version 2021.1 (2021a)" in 57257a4335
- 7.3.28 is next in 039ca4e219
- Fix #53467: Phar cannot compress large archives in 1bb2a4f91c
- Fix #74779: x() and y() truncating floats to integers in 3f8d21b922
- Use ST_Y() instead of the deprecated/removed Y() in test in 4ff2665509
- Fix test expectation for PHP 8.0 in f23bfc4b43
- Fix #80706:
mail()
: Headers after Bcc headers may be ignored in ca7547c9e2 - Fix locale dependent parsing of PostgreSQL version number in 03713ace23
- Avoid C4090 level 1 warning in 4f508003a9
- Adapt test case for libcurl 7.75.0+ in afe17cc1b6
Daniel Black
- Fix #78680: mysqlnd pam plugin missing terminating null in 3646604203
David CARLIER
- crc32 mac build fix in 12d08db913
Derick Rethans
- Updated to version 2021.1 (2021a) in 491488d217
- Empty merge in 072cfef1d5
- Updated to version 2021.1 (2021a) in 3f183bbcf8
- Empty merge in f31538c997
- Updated to version 2021.1 (2021a) in fee80e397d
- PHP-7.4 is now 7.4.17-dev in 6d3d9104e6
- Fixed dates in 2d858fbfb1
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
onmake clean
in 408272b8d9
Gabriel Caruso
- Next is 8.0.3 in 34f0f60db5
Michael Voříšek
- Fix stub for
Serializable::serialize()
in 27eb81604b
Máté Kocsis
- Add missing classes to stubs in 45fa7596dc
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
- Update year to 2021 in 8c04944b66
Remi Collet
- Fix #80682 opcache doesn't honour pcre.jit option in 067f7e4150
- NEWS in aeb4f21549
- NEWS in b23a4256a6
Sammy Kaye Powers
- Observe fake closures in 17142eab22
Sara Golemon
- Prep NEWS for 8.0.3 final in fcf5bd7e2a
- Formatting of release date in 763c61db29
- Update versions for PHP 8.0.3 in cb7b49dcf8
Stanislav Malyshev
- Rm unneeded function in 9c673083cd
- Rm unneeded function in e9b8b085a7
- Fix bug #80672 - Null Dereference in SoapClient in 3c939e3f69
Tyson Andre
- Properly render 2+ namespaces functions in build/gen_stub.php in 5e06dad411