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.
Downloads
Source Code
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.0.1
./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
Docker/Podman Containers
docker pull php:8.0.1-cli-alpine
docker pull php:8.0.1-cli
docker pull php:8.0.1-fpm-alpine
docker pull php:8.0.1-apache
docker pull php:8.0.1-fpm
ChangeLog
Core
- 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).
Fileinfo
- Fixed bug #77961 (finfo_open crafted magic parsing SIGABRT).
FPM
- Fixed bug #69625 (FPM returns 200 status on request without SCRIPT_FILENAME env).
IMAP
- 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
Intl
- Fixed bug #80425 (
MessageFormatAdapter::getArgTypeList
redefined).
OCI8
- Create Windows DLLs for Oracle Client 19c.
Opcache
- 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)).
OpenSSL
- Fixed bug #80368 (OpenSSL extension fails to build against LibreSSL due to lack of OCB support).
PDO MySQL
- 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()
).
Phar
- 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).
Phpdbg
- Fixed bug #76813 (Access violation near NULL on source operand).
SPL
- Fixed #62004 (SplFileObject: fgets after seek returns wrong line).
Standard
- Fixed bug #77423 (FILTER_VALIDATE_URL accepts URLs with invalid userinfo). (CVE-2020-7071)
- Fixed bug #80366 (Return Value of
zend_fstat()
not Checked).
Tidy
- Fixed bug #77594 (ob_tidyhandler is never reset).
Tokenizer
- Fixed bug #80462 (Nullsafe operator tokenize with TOKEN_PARSE flag fails).
XML
- XmlParser opaque object renamed to XMLParser for consistency with other XML objects.
Zlib
- 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
- Fix typos in php.ini files in ed949a1973
- Fix
PDOStatement::fetchObject()
stub in 4bbb98c24f
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
- Sync README with package.xml in 68d5878097
- Fix test diff in 37f96d990c
- Update PECL package release date in a9c44d1b5a
Christoph M. Becker
- Fix #80345: PHPIZE configuration has outdated
PHP_RELEASE_VERSION
in c2b1182879 - Fix #72964: White space not unfolded for CC/Bcc headers in 881e43a03c
- Fix #77594: ob_tidyhandler is never reset in 221345a013
- Fix COMPersistHelper::__construct() stub in 807775b641
- Fix #80366: Return Value of
zend_fstat()
not Checked in 5f9c82d514 - Fix #77961: finfo_open crafted magic parsing SIGABRT in 39f95f5614
- Allow
PHP_CURL_APIs
to be imported by DLLs in bf244757ee - Fix bug number in 49e1ed1941
- tidy::repairFile() and ::repairString() return string|false in 44ccccdfb8
- Fix #76813: Access violation near NULL on source operand in 5e15c9c41f
- Drop all JIT related XFAILS from phpdbg test suite in 57463cf78b
- Fix #62004: SplFileObject: fgets after seek returns wrong line in f1d11c118d
- Fix #73809: Phar Zip parse crash - mmap fail in c283f53b24
- Fix failing VirtualProtect() calls in 72cd5793be
- Fix #75102:
PharData
says invalid checksum for valid tar in 8588ae7215 ldap_exop_whoami()
does not return TRUE in c3734f9ae1- Fix #77069: stream filter loses final block of data in 65f5573bc8
- Fix #48725: Support for flushing in zlib stream in 20e75329f2
- Drop
pdo_mysql_prepare_load_data.phpt
in 10c9d615de - Add Windows support for OCI 19 in 2e974c8c81
- 7.3.27 is next in 40d9e3ab86
- Fix #77322: PharData::addEmptyDir('/') Possible integer overflow in a53d67ceac
- Fix #77423:
parse_url()
will deliver a wrong host to user in b7f837381e
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
- JIT disabled build fix in 1e6c7e776c
Dharman
- Fixed error reporting in mysqli_stmt::__construct in 233f507fe6
- Fix typos in mysql tests in 53f7bddbeb
- Remove PHP 5 mysqli tests in 261faa62da
- Fixed bug #80458 in a83cc03c13
- Fix test cases for MariaDB in 54a63d91b8
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 "
skipif
.inc" 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
ekinhbayar
- Remove
bug41347.phpt
as the error cases are already tested in b0e858da8b
Gabriel Caruso
- Update versions for PHP 8.0.1 in 94d96b3c97
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
jrfnl
- UPGRADING: (real) cast has been removed in 860f46e2f5
Máté Kocsis
- Remove some incorrect mixed parameter types in 40ebfd6730
Nikita Popov
- Use MIN/MAX when dumping RANGE[] in fa67864c13
- Fixed bug #80391 in 912cb8b8b5
- Fixed bug #80404 in 03f8bccaf5
- Fixed bug #80362: Running dtrace scripts can cause php to crash in fa713ec17b
- Fixed bug #80393 in d016434ad3
- Fixed bug #80377 in fc26ad9b12
- Fix usage of casted string in ReflectionParameter ctor in 706241f82d
- Fixed bug #80377 in 4633e70ab1
- Fix ref source management during unserialization in 7a3f25e370
- Allow running
tidy.php
on specific directory in 373fd61a51 - Reindent
ext/mysqli
tests in 97d192b444 - Reindent more mysqli tests in e3e67b721f
- Fix phpt reindentation in tidy script in 367f8452c4
- Fix unserialization ref source management, again in f5b93626a6
- Fixed bug #80411 in 2fb12be84c
- Add UPGRADING note for
PDO::inTransaction()
in 306555e11d - Fix bug #80402: Don't strip -lpthread in ea372e7463
- Fixed bug #80425 in 5240f8391f
- Fixed bug #80433 in 48ff654fb9
- Fixed bug #80368 in 0f579fd7c8
- Move avx check into a macro in 4a7ebb6d83
- Assert that cpuinfo is initialized before use in f35b194029
- Avoid direct calls to
zend_cpu_supports()
in 2772f7c3ad - Make sure
zend_cpu_supports_pclmul()
is always defined in 8e25cf26af - Only use travis for cron jobs in 8b281e5b6b
- Fix AVX detection in 4e30ab33d8
- Handle exceptions during SCCP function evaluation in e5aae35855
- Fix build for non-x86 in 3430d856ac
- Fix handling of sccp exceptions in a505fc627e
- Don't check for throwing calls in sccp function evaluation in 0ce9b5f755
- Respect strict_types during sccp function call evaluation in 5b3809e942
- Use ephemeral ports in mcast_ipv*_recv.phpt in e77ac88a44
- Only replace IN_ARRAY result type for JMPZ/JMPNZ in fdb05b92bf
- Fixed bug #80437 in 15073d8e1d
- Fix another ref source management bug in unserialize in ed9532cff0
- Add additional entries to unserialize corpus in 4643c0aac5
- Suppress stream errors in mysqlnd in 24a19cc232
- Next attempt to fix bug #80368 in ecee3f1209
- Don't mark cpu_supports functions as always inline in 648cda6c9f
- Fix use after free with file cache and arena allocated strings in 5dfec886d6
- Don't use scope when validating Attribute in f06afc434a
- Fixed bug #80462 in 7a61984a2b
- Don't throw from
imagecreatefromstring()
with too short string in a89aaf6c38 - Fixed bug #80457 in d6fcaf5da4
- Fix removal of type source during unserialization in 77325c4448
- Fix another typed resource issue in unserialization in 2d467abc46
- Fixed bug #63185 in bd093ad861
- Enable XFAILed test in 713ef8511b
- Handle column count change in PDO MySQL in bfa69d27bc
- PDO MySQL: Normalize handling of empty stored procedure result set in 2df09b9b64
- Handle changing column count in mysqlnd result binding in 311a77d08e
- Make XFAILED test less broken in 9c0712d2cd
- Fix stmt_free_result implementation and usage in 18517e7a63
- Fixed bug #78154 in 44b234a9bc
- PDO MySQL: Handle error during closeCursor() in 23193e89e4
- PDO MySQL: Make sure nextRowset() works with partially consumed result in 186b766368
- PDO MySQL: Use
set_row_count()
helper in fb69c7752d - PDO MySQL: Extract common code for handling PS results in b9ea8d6b96
- Add ifdef for mysqlnd only function in a073b0218c
- Remove unnecessary
more_results()
checks in ef342b0730 - Fixed bug #66878 in fcfa7fd06b
- Fixed bug #70066 in 106e7e4bca
- Backport fix for bug #70066 in f3d5877845
- Fixed bug #71145 in 4922049213
- Fixed bug #76815 in e450621f5e
- Fixed bug #79872 by improving error message in 288581fade
- Fixed bug #79131 in 15b51a215a
- Allow drivers to omit error code in a5527577e7
- Fixed bug #72368 in 9e3ba775b7
- PDO MySQL: Fix leak with libmysqlclient and multiple rowsets in c927c831e6
- Fixed bug #62889 in 43741a3f26
- PDO MySQL: Fix libmysql option test in 4e51059d52
- PDO MySQL: Use stmt_next_result with libmysqlclient as well in d6b4b82a38
- Fixed bug #67004 in ad8eb116d8
- PDO MySQL: Unskip
bug_41125.phpt
in e4e88bd7e3 - PDO MySQL: Don't skip two LOCAL_INFILE tests with libmysqlclient in 81f012a164
- PDO MySQL: Fix nextRowset() on libmysqlclient with native PS in 7a89157f8c
- Fixed bug #79132 in ccb7f1c7d8
Paul Crovella
- Upload coverage data to codecov.io in 8f8e6f95af
Peter Kokot
- Backport fix for bug #78750 in d386ed1e6b
Remi Collet
- zip extension is 1.19.2 in ce18899b44
Sara Golemon
- 8.0 branch should be prepping for 8.0.1 in 3c44e9c080
- Remove -dev from
ZEND_VERSION
in c65f0c7aca
twosee
- EXTERN_C wrapping for GC buffer APIs in 26c7b9402d