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 https://github.com/php/php-src.git --depth 1 --branch php-7.3.0
./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:7.3.0-cli-alpine
docker pull php:7.3.0-cli
docker pull php:7.3.0-fpm-alpine
docker pull php:7.3.0-apache
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
tophpinfo()
<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.h
ttp_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.c
onf 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()
andsession_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.