PHP is an open source general-purpose server-side scripting language originally designed for Web development to produce dynamic Web pages. It is one of the first developed server-side scripting languages to be embedded into an HTML source document rather than calling an external file to process data. The code is interpreted by a Web server with a PHP processor module which generates the resulting Web page. It also has evolved to include a command-line interface capability and can be used in standalone graphical applications.

If you are new to PHP and want to get some idea of how it works, try the introductory tutorial.

After that, check out the online manual.

What's New:


  • 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).
  • 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).


  • 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 bug #62004 (SplFileObject: fgets after seek returns wrong line).


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


  • 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 bug #48725 (Support for flushing in zlib stream).