PHP 7.3.0: Downloads, Changelog, News

Release Information

Release
7.3.0
PHP Version
PHP 7.3
Release Date
Release Type
Bug Fix Release
Release Status
EOL, Use PHP 7.3.33
Branch Status
Unsupported

PHP 7.3 reached EOL on , and all releases of this version no longer receive security or bug fixes. Using PHP 7.3.0 is not recommended. PHP 7.3.33 is the latest version in the series.

Downloads

Source Code

Git Clone
Use Git to clone the 7.3.0 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-7.3.0
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
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:7.3.0-cli-alpine

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

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:7.3.0-apache

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:7.3.0-fpm

ChangeLog

Core

  • Improved PHP GC.
  • Redesigned the old ext_skel program written in PHP, run: 'php ext_skel.php' for all options. This means there are no dependencies, thus making it work on Windows out of the box.
  • Removed support for BeOS.
  • Add PHP_VERSION to phpinfo() <title/>. (github/MattJeevas)
  • Add net_get_interfaces().
  • Added gc_status().
  • Implemented flexible heredoc and nowdoc syntax, per RFC https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes.
  • Added support for references in list() and array destructuring, per RFC https://wiki.php.net/rfc/list_reference_assignment.
  • Improved effectiveness of ZEND_SECURE_ZERO for NetBSD and systems without native similar feature.
  • Added syslog.facility and syslog.ident INI entries for customizing syslog logging.
  • Fixed bug #75683 (Memory leak in zend_register_functions() in ZTS mode).
  • Fixed bug #75031 (support append mode in temp/memory streams).
  • Fixed bug #74860 (Uncaught exceptions not being formatted properly when error_log set to "syslog").
  • Fixed bug #75220 (Segfault when calling is_callable on parent).
  • Fixed bug #69954 (broken links and unused config items in distributed ini files).
  • Fixed bug #74922 (Composed class has fatal error with duplicate, equal const properties).
  • Fixed bug #63911 (identical trait methods raise errors during composition).
  • Fixed bug #75677 (Clang ignores fastcall calling convention on variadic function).
  • Fixed bug #54043 (Remove inconsitency of internal exceptions and user defined exceptions).
  • Fixed bug #53033 (Mathematical operations convert objects to integers).
  • Fixed bug #73108 (Internal class cast handler uses integer instead of float).
  • Fixed bug #75765 (Fatal error instead of Error exception when base class is not found).
  • Fixed bug #76198 (Wording: "iterable" is not a scalar type).
  • Fixed bug #76137 (config.guess/config.sub do not recognize RISC-V).
  • Fixed bug #76427 (Segfault in zend_objects_store_put).
  • Fixed bug #76422 (ftruncate fails on files > 2GB).
  • Fixed bug #76509 (Inherited static properties can be desynchronized from their parent by ref).
  • Fixed bug #76439 (Changed behaviour in unclosed HereDoc).
  • Fixed bug #63217 (Constant numeric strings become integers when used as ArrayAccess offset).
  • Fixed bug GH-33502 (Some nullary functions don't check the number of arguments).
  • Fixed bug #76392 (Error relocating sapi/cli/php: unsupported relocation type 37).
  • The declaration and use of case-insensitive constants has been deprecated.
  • Added syslog.filter INI entry for syslog filtering.
  • Fixed bug #76667 (Segfault with divide-assign op and get + set).
  • Fixed bug #76030 (RE2C_FLAGS rarely honoured)
  • Fixed broken zend_read_static_property
  • Fixed bug #76773 (Traits used on the parent are ignored for child classes).
  • Fixed bug #76767 (‘asm’ operand has impossible constraints in zend_operators.h).
  • Fixed bug #76752 (Crash in ZEND_COALESCE_SPEC_TMP_HANDLER - assertion in _get_zval_ptr_tmp failed).
  • Fixed bug #76820 (Z_COPYABLE invalid definition).
  • Fixed bug #76510 (file_exists() stopped working for phar://).
  • Fixed bug #76869 (Incorrect bypassing protected method accessibilty check).
  • Fixed bug #72635 (Undefined class used by class constant in constexpr generates fatal error).
  • Fixed bug #76947 (file_put_contents() blocks the directory of the file (DIR)).
  • Fixed bug #76979 (define() error message does not mention resources as valid values).
  • Fixed bug #76825 (Undefined symbols ___cpuid_count).
  • Fixed bug #77110 (undefined symbol zend_string_equal_val in C++ build).

BCMath

  • Implemented FR #67855 (No way to get current scale in use).
  • Fixed bug #66364 (BCMath bcmul ignores scale parameter).
  • Fixed bug #75164 (split_bc_num() is pointless).
  • Fixed bug #75169 (BCMath errors/warnings bypass PHP's error handling).

CLI

  • Fixed bug #44217 (Output after stdout/stderr closed cause immediate exit with status 0).
  • Fixed bug #77111 (php-win.exe corrupts unicode symbols from cli parameters).

cURL

  • Expose curl constants from curl 7.50 to 7.61.
  • Fixed bug #74125 (Fixed finding CURL on systems with multiarch support).

Date

  • Implemented FR #74668: Add DateTime::createFromImmutable() method.
  • Fixed bug #75222 (DateInterval microseconds property always 0).
  • Fixed bug #68406 (calling var_dump on a DateTimeZone object modifies it).
  • Fixed bug #76131 (mismatch arginfo for date_create).
  • Updated timelib to 2018.01RC1 to address several bugs: . Fixed bug #75577 (DateTime::createFromFormat does not accept 'v' format specifier). (Derick) . Fixed bug #75642 (Wrap around behaviour for microseconds is not working).

DBA

  • Fixed bug #75264 (compiler warnings emitted).

DOM

  • Fixed bug #76285 (DOMDocument::formatOutput attribute sometimes ignored).

Fileinfo

  • Fixed bug #77095 (slowness regression in 7.2/7.3 (compared to 7.1)).

Filter

  • Added the 'add_slashes' sanitization mode (FILTER_SANITIZE_ADD_SLASHES).

FPM

  • Added fpm_get_status function.
  • Fixed bug #62596 (getallheaders() missing with PHP-FPM).
  • Fixed bug #69031 (Long messages into stdout/stderr are truncated incorrectly) - added new log related FPM configuration options: log_limit, log_buffering and decorate_workers_output.

ftp

  • Fixed bug #77151 (ftp_close(): SSL_read on shutdown).

GD

  • Added support for WebP in imagecreatefromstring().

GMP

  • Export internal structures and accessor helpers for GMP object.
  • Added gmp_binomial(n, k).
  • Added gmp_lcm(a, b).
  • Added gmp_perfect_power(a).
  • Added gmp_kronecker(a, b).

iconv

  • Fixed bug #53891 (iconv_mime_encode() fails to Q-encode UTF-8 string).
  • Fixed bug #77147 (Fixing 60494 ignored ICONV_MIME_DECODE_CONTINUE_ON_ERROR).

IMAP

  • Fixed bug #77020 (null pointer dereference in imap_mail).
  • Fixed bug #77153 (imap_open allows to run arbitrary shell commands via mailbox parameter).

Interbase

  • Fixed bug #75453 (Incorrect reflection for ibase_[p]connect).
  • Fixed bug #76443 (php+php_interbase.dll crash on module_shutdown).

intl

  • Fixed bug #75317 (UConverter::setDestinationEncoding changes source instead of destination).
  • Fixed bug #76829 (Incorrect validation of domain on idn_to_utf8() function).

JSON

  • Added JSON_THROW_ON_ERROR flag.

LDAP

  • Added ldap_exop_refresh helper for EXOP REFRESH operation with dds overlay.
  • Added full support for sending and parsing ldap controls.
  • Fixed bug #49876 (Fix LDAP path lookup on 64-bit distros).

libxml2

  • Fixed bug #75871 (use pkg-config where available).

litespeed

  • Fixed bug #75248 (Binary directory doesn't get created when building only litespeed SAPI).
  • Fixed bug #75251 (Missing program prefix and suffix).

MBstring

  • Updated to Oniguruma 6.9.0.
  • Fixed bug #65544 (mb title case conversion-first word in quotation isn't capitalized).
  • Fixed bug #71298 (MB_CASE_TITLE misbehaves with curled apostrophe/quote).
  • Fixed bug #73528 (Crash in zif_mb_send_mail).
  • Fixed bug #74929 (mbstring functions version 7.1.1 are slow compared to 5.3 on Windows).
  • Fixed bug #76319 (mb_strtolower with invalid UTF-8 causes segmentation fault).
  • Fixed bug #76574 (use of undeclared identifiers INT_MAX and LONG_MAX).
  • Fixed bug #76594 (Bus Error due to unaligned access in zend_ini.c OnUpdateLong).
  • Fixed bug #76706 (mbstring.http_output_conv_mimetypes is ignored).
  • Fixed bug #76958 (Broken UTF7-IMAP conversion).
  • Fixed bug #77025 (mb_strpos throws Unknown encoding or conversion error).
  • Fixed bug #77165 (mb_check_encoding crashes when argument given an empty array).

Mysqlnd

  • Fixed bug #76386 (Prepared Statement formatter truncates fractional seconds from date/time column).

ODBC

  • Removed support for ODBCRouter.
  • Removed support for Birdstep.
  • Fixed bug #77079 (odbc_fetch_object has incorrect type signature).

Opcache

  • Fixed bug #76466 (Loop variable confusion).
  • Fixed bug #76463 (var has array key type but not value type).
  • Fixed bug #76446 (zend_variables.c:73: zend_string_destroy: Assertion `!(zval_gc_flags((str)->gc)).
  • Fixed bug #76711 (OPcache enabled triggers false-positive "Illegal string offset").
  • Fixed bug #77058 (Type inference in opcache causes side effects).
  • Fixed bug #77092 (array_diff_key() - segmentation fault).

OpenSSL

  • Added openssl_pkey_derive function.
  • Add min_proto_version and max_proto_version ssl stream options as well as related constants for possible TLS protocol values.

PCRE

  • Implemented https://wiki.php.net/rfc/pcre2-migration.
  • Upgrade PCRE2 to 10.32.
  • Fixed bug #75355 (preg_quote() does not quote # control character).
  • Fixed bug #76512 (\w no longer includes unicode characters).
  • Fixed bug #76514 (Regression in preg_match makes it fail with PREG_JIT_STACKLIMIT_ERROR).
  • Fixed bug #76909 (preg_match difference between 7.3 and < 7.3).

PDO_DBlib

  • Implemented FR #69592 (allow 0-column rowsets to be skipped automatically).
  • Expose TDS version as `PDO::DBLIB_ATTR_TDS_VERSION` attribute on \PDO instance.
  • Treat DATETIME2 columns like DATETIME.
  • Fixed bug #74243 (allow locales.conf to drive datetime format).

PDO_Firebird

  • Fixed bug #74462 (PDO_Firebird returns only NULLs for results with boolean for FIREBIRD >= 3.0).

PDO_OCI

  • Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up).

PDO SQLite

  • Add support for additional open flags

pgsql

  • Added new error constants for pg_result_error(): PGSQL_DIAG_SCHEMA_NAME, PGSQL_DIAG_TABLE_NAME, PGSQL_DIAG_COLUMN_NAME, PGSQL_DIAG_DATATYPE_NAME, PGSQL_DIAG_CONSTRAINT_NAME and PGSQL_DIAG_SEVERITY_NONLOCALIZED.
  • Fixed bug #77047 (pg_convert has a broken regex for the 'TIME WITHOUT TIMEZONE' data type).

phar

  • Fixed bug #74991 (include_path has a 4096 char limit in some cases).
  • Fixed bug #65414 (deal with leading slash when adding files correctly).

readline

  • Added completion_append_character and completion_suppress_append options to readline_info() if linked against libreadline.

Session

  • Fixed bug #74941 (session fails to start after having headers sent).

SimpleXML

  • Fixed bug #54973 (SimpleXML casts integers wrong).
  • Fixed bug #76712 (Assignment of empty string creates extraneous text node).

Sockets

  • Fixed bug #67619 (Validate length on socket_write).

SOAP

  • Fixed bug #75464 (Wrong reflection on SoapClient::__setSoapHeaders).
  • Fixed bug #70469 (SoapClient generates E_ERROR even if exceptions=1 is used).
  • Fixed bug #50675 (SoapClient can't handle object references correctly).
  • Fixed bug #76348 (WSDL_CACHE_MEMORY causes Segmentation fault).
  • Fixed bug #77141 (Signedness issue in SOAP when precision=-1).

SPL

  • Fixed bug #74977 (Appending AppendIterator leads to segfault).
  • Fixed bug #75173 (incorrect behavior of AppendIterator::append in foreach loop).
  • Fixed bug #74372 (autoloading file with syntax error uses next autoloader, may hide parse error).
  • Fixed bug #75878 (RecursiveTreeIterator::setPostfix has wrong signature).
  • Fixed bug #74519 (strange behavior of AppendIterator).
  • Fixed bug #76131 (mismatch arginfo for splarray constructor).

SQLite3

  • Updated bundled libsqlite to 3.24.0.

Standard

  • Added is_countable() function.
  • Added support for the SameSite cookie directive, including an alternative signature for setcookie(), setrawcookie() and session_set_cookie_params().
  • Remove superfluous warnings from inet_ntop()/inet_pton().
  • Fixed bug #75916 (DNS_CAA record results contain garbage).
  • Fixed unserialize(), to disable creation of unsupported data structures through manually crafted strings.
  • Fixed bug #75409 (accept EFAULT in addition to ENOSYS as indicator that getrandom() is missing).
  • Fixed bug #74719 (fopen() should accept NULL as context).
  • Fixed bug #69948 (path/domain are not sanitized in setcookie).
  • Fixed bug #75996 (incorrect url in header for mt_rand).
  • Added hrtime() function, to get high resolution time.
  • Fixed bug #48016 (stdClass::__setState is not defined although var_export() uses it).
  • Fixed bug #76136 (stream_socket_get_name should enclose IPv6 in brackets).
  • Fixed bug #76688 (Disallow excessive parameters after options array).
  • Fixed bug #76713 (Segmentation fault caused by property corruption).
  • Fixed bug #76755 (setcookie does not accept "double" type for expire time).
  • Fixed bug #76674 (improve array_* failure messages exposing what was passed instead of an array).
  • Fixed bug #76803 (ftruncate changes file pointer).
  • Fixed bug #76818 (Memory corruption and segfault).
  • Fixed bug #77081 (ftruncate() changes seek pointer in c mode).

Testing

  • Implemented FR #62055 (Make run-tests.php support --CGI-- sections).

Tidy

  • Support using tidyp instead of tidy.
  • Fixed bug #74707 (Tidy has incorrect ReflectionFunction param counts for functions taking tidy).
  • Fixed arginfo for tidy::__construct().

Tokenizer

  • Fixed bug #76437 (token_get_all with TOKEN_PARSE flag fails to recognise close tag).
  • Fixed bug #75218 (Change remaining uncatchable fatal errors for parsing into ParseError).
  • Fixed bug #76538 (token_get_all with TOKEN_PARSE flag fails to recognise close tag with newline).
  • Fixed bug #76991 (Incorrect tokenization of multiple invalid flexible heredoc strings).

XML

  • Fixed bug #71592 (External entity processing never fails).

Zlib

  • Added zlib/level context option for compress.zlib wrapper.
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.