PHP 7.3.0beta1: Downloads, Changelog, News

Release Information

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

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


Source Code

Git Clone
Use Git to clone the 7.3.0beta1 tag from the PHP Git repository.
git clone --depth 1 --branch php-7.3.0beta1
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 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.0beta1-cli-alpine

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

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:7.3.0beta1-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.0beta1-fpm

Commit List

Anatol Belski

Andrea Faulds

  • Export stdClass objects using (object) cast (fixes #48016) in e4e9cd8355


  • Fixed bug #76366 (references in sub-array for filtering breaks the filter) in 47fb17b108

Christoph M. Becker

  • Add test for PR #2382 in b37dafcc23
  • Fix #76594: Bus Error due to unaligned access in zend_ini.c OnUpdateLong in 1c01b1ab48
  • Fix #76574: use of undeclared identifiers INT_MAX and LONG_MAX in 271ae3eb2b
  • Fix Travis build in 236ae06e0b
  • Fix GH-33502: Some nullary functions don't check the number of arguments in 6c630eefcb
  • Fix #73817: Incorrect entries in get_html_translation_table in 0f8c1ee76d
  • Deprecate explicit use of FILTER_FLAG_SCHEME|HOST_REQUIRED in c0407d95f7
  • FILTERFLAG(SCHEME|HOST)_REQUIRED are now deprecated in 79a27ccf3f
  • Improve implementation of array_key_first() and array_key_last() in 9f957fd303
  • Fix #52974: jewish.c: compile error under Windows with GBK charset in 99fdf5916e
  • Fix #76643: Segmentation fault when using output_add_rewrite_var in 40bd84d3e3
  • Fix #76665: SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle in ed7e3bc70a
  • Update UPGRADING wrt. samesite cookie RFC in 974abd8b43
  • Fix UPGRADING in bf5cf79456
  • Update API version numbers in 144e8d1f83
  • Fix ZEND_EXTENSION_API_NO in f6ee308143
  • Update versions for PHP 7.3.0beta1 in 9160e881a6

David Carlier

  • random_bytes improvements for FreeBSD (from 12.x serie) in 9da4e30c75

Dmitry Stogov

  • Partial revert of 30156d58 in 57af94c8b9
  • Another fix for bug #63217 in 28b03f9605
  • Eliminated REFCOUNTED checks on persistent constant operands in SEND_VAL[_EX] and QM_ASSIGN in 004a0568f4
  • str_replace() micro-optimization in 14e6c0cb8c
  • API cleanup. Removed unused functions (kept compatibility macros) in 7eb045d31a
  • Avoid useless copying and conversion in 2edf94a637
  • SEND_UNPACK should throw exception on Traversable with non-integer keys in d84ef96742
  • concat_function() micro optimization in 5f19816f53
  • se zval_ptr_dtor_str() instead of zend_string_release_ex(Z_STR(*), 0) in af341213f7
  • Replace legacy zval_dtor() by zval_ptr_dtor_nogc() or even more specialized destructors in 4a475a4976
  • Argument unpacking with Traversables and non-integer keys in 3a8f26060c
  • Fixed some incorrect zval_dtor() usages in 5898583e94
  • Removed legacy zval_dtor() usage. It doesn't work with zvals with refcount == 0, anyway in 6c0ddcda47
  • Fixed incorrrecr zval_dtor() usage to replace value of argument passed by reference, that may lead to memory leaks in 265c3ed6cf
  • Use zval_ptr_dtor() instead of zval_dtor() in internal functions that destroy new created object (This is safer and produces less code) in b6cc4d2009
  • Don't keep dangling pointer to function_name in 0d235517a3
  • Replace zval_dtor() with specialized destructors in b6fb584505
  • Fixed wrong zval_dtor() usage in 77c6ca7b62
  • Replace zval_dtor() with specialized destructors in 273e194df5
  • Use zval_ptr_dtor() instead of legacy zval_dtor(), to destroy unused values returned from PHP functions (they may be circular data structures) in 83f6f8563c
  • Replace zval_dtor() with specialized destructors in 91fc0d1a41
  • Use zval_ptr_dtor() instead of zval_dtor() in internal functions that destroy new created object (This is safer and produces less code) in 3780b027dd
  • Use zval_ptr_dtor_nogc() in JSON parser (it can't produce circular data structures) in 918a9f09f8
  • Use zval_ptr_dtor_nogc() instead of zval_dtor() inplaces where circular-references are not possible in 5f83904a5d
  • Use zval_ptr_dtor() to replace bound variables (original values nay be circular structures) in d0a6b1009f
  • It's safer to use zval_ptr_dtor() for iterator keys in 43d5a3665d
  • Use zval_ptr_dtor() imstead of zval_dtor() in 169d454593
  • Avoid useless checks in object_init() in 8361c0a9a7
  • Optimize object to array casting in 85b2bc38e1
  • Conversion related optimizations in ca40664ad6
  • Optimize array to object casting in dcf7592076
  • Fixed reference-counting in zend_parse_arg_str_weak() in 41db5f73ce
  • Use zval_ptr_dtor() instead of zval_dtor() in in-place array/object conversion functions in bd8e76761f
  • Uze ZVAL_COPY_DEREF() instead of ZVAL_DEREF() and ZVAL_COPY() in 67b4c3379a
  • Fixed test in ad2719cf9c
  • Eliminated reference-counting and EG(exception) check in 40551e0255
  • Eliminated check in a34fedb723
  • Avoid reloading in 797e87060c
  • Combined few checks into one in e4be6ce0fa
  • Avoid useless checks for public functions in dbb9867b3e
  • Optimization in 6c61f15408
  • Removed deprecated condition in 62b3464871
  • Avoid useless copying in 0db8c974a5
  • Use ZVAL_COPY_DEREF() in 7da042cbd8
  • Avoid copying in 4182b0855f
  • Fixed possible assertion/crash when PHP script can't be stored in SHM (e.g. because another process already did this) in 956ac5cbf5
  • Changed structure of zend_class_entry.trait_aliases and zend_class_entry.trait_precedences to avoid keeping "intermediate" trait references, that are used only during inheritance in 85ee47eda0
  • Improved user iterator implementation to reduce zend_class_entry memory consumption and avoid race condition during resolving/caching of user iterator functions of internal classes in ZTS build in 7d4e18b05d
  • Merge zend_class_entry.create_object and zend_class_entry.interface_gets_implemented into the same memory lacation. The first used only by classes, the second only by magic interfaces in 5e8977bd62
  • Fixed tests in 571dac8c8f
  • Flatten strip_tags state machine (GCC overoptimized this function, producing enormpous amount of code) in 5cf6474277
  • Fixed error messages in 70d0175a13
  • Reduce overhead of case-insensitive constants deprecation for "fast path" in 88dd38ee81
  • Inline FETCH_CONST and DEFINED handlers into "hybrid" executor in df60566671
  • Improved "Fast Shutdown" in 3b6e1ee4ee
  • Perform checks for propertis started with '\0' only for dynamic properties in 412dd75e05
  • Allocate array of proper size in e8a04b387e
  • Merge "no_utf_check" and "g_notempty" into single "options" in 5d60651165
  • Move "/e" modifier check into regex compiler in 29f942b3d0
  • Reorder conditions in 1820f2f2f3
  • Fixed typo in d77aa8fa6d
  • Micro optimizations in b81d712961
  • Matching loops optimization in 54ebebd686
  • Removed redundand code in 5be44312f8
  • Micro-optimization in afc82e243c
  • API cleanup in ebd1f5af3e
  • Use better destructor (key may be only IS_STRING or IS_LONG) in b121405960
  • Avoid code duplication in d4e60a1ffd
  • Fixed tests in 7ef8e3f87f
  • Better name: ZEND_PROPERTY_HAS => ZEND_PROPERTY_NOT_EMPTY in d775fe33d1
  • Split add/sub_function(s) into fast and slow parts in aed3de1bc5
  • Regenerate scanners using re2c version >= 1.0.0 (newer version, at least, produce less code) in a29a800cb0
  • Encode parent class name as IS_CONST operand in DECLARE_INHERITED_CLASS and DECLARE_ANON_INHERITED_CLASS opcodes (eliminate FETCH_CLAS in f950128cd6
  • typo in 57c4ae393c
  • Documented ZEND_ACC_* flags (values are kept unchanged, except for ZEND_ACC_IMMUTABLE, that was introduced in 7.3 anyway) in 7a41e4c0d0
  • Pack zend_constant.flags and zend_constant.module_number into reserved space inside zend_constant.value in ab8094c666
  • Use better check in f374e93762
  • Improved assignment to "next" element of array ($a[] = ...) in a588b825d6
  • Removed duplicate code. zend_fetch_dimension_address_LIST_w() was a copy of zend_fetch_dimension_address_W(), ZEND_FETCH_LIST_W_SPECCV... a copy of ZEND_FETCH_DIM_W_SPEC_CV_ in 3ced766da9
  • Added missing define in be805f146c
  • Loop optimization in 909f943fe5
  • Use better macros in 5674cf888d
  • Removed useless IS_UNDEF checks in c42f0ba4f7
  • Simplified property name to string conversion in 57527455eb
  • Improved method visibility checks in 3ccd985478

Dorin Marcoci

Dylan K. Taylor

  • Fixed regex for checking libzip static lib in 77a841db48

Enno Woortmann

  • Add implementation and tests for new methods - array_key_first(array $a) Returns the key of the first element or null - array_key_last(array $a) Returns the key of the last element or null in 50516a6e1f

Ferenc Kovacs

Frederik Bosch

Gabriel Caruso

  • Small tweaks to php scripts in c7d1c14b5c
  • Small tweaks to php scripts in 96f83e40c8
  • Fix failing test upstream in cf5f26b260
  • Test http_response_code function in 59456974f2
  • Make more tests run and fix SKIPIF sections in 49c193eeb3
  • Removed and fixed unused variables in 6ac48425a8
  • Use variables that already received ZEND_NUM_ARGS() in 8ca1f47a7a
  • Give a reason why the test was skipped in c93aba042f
  • Remove extra semicolons in 9e4d590b19
  • Remove unused variables in fb966b9825
  • Remove extra semicolons in 562150906a
  • Remove superfluous check for PHP 7+ tests in 7ec64a831d
  • Reverts some changes from 7ec64a83 in 1359ff8052
  • Run to reorganize tokens in a61756252a
  • Remove superfluous SKIPIF sections of always available functions in 1461f8ef0d
  • Remove superfluous SKIPIF sections of always available interfaces in aac5cdc7d7
  • Remove superfluous SKIPIF sections of always available constants in d88bbcea82
  • Remove superfluous SKIPIF sections of always available functions in 745f6627bd
  • Give a reason why the test was skipped in 4a1336de7c
  • Make more tests run on 64bit plataforms in 9c8b3ae43f


Jakub Zelenka

  • Migrate fpm_get_status test in f86f3edeef
  • Update NEWS and UPGRADING for fpm_get_status addition in 2a78006adb
  • Refactore FPM logging in 3e5afbf0a8
  • Rename none syslog.filter to all and update ini description in c85504386d
  • Update NEWS and UPGRADING with info about syslog.filter in e5a9956336
  • Return bool from zlog_stream_setmsg{prefix,suffix} in 26cd84d19f


  • adds support for named captures to mb_ereg & mb_ereg_search in 212f56b7ca
  • adds support for named subpatterns to mb_ereg_replace in 8f1782678e

Kalle Sommer Nielsen

  • Fixed bug #76501 (Funny message with fatal error) in c49f0fd9ac
  • Added test case for bug #76539 for master only as the behavior has been restored in 6337af09dc
  • Added the 'add_slashes' sanitization filter (FILTER_SANITIZE_ADD_SLASHES) as an alias to 'magic_quotes' (FILTER_SANITIZE_MAGIC_QUOTES) so we can move past our "magical" legacy in a8dce31957
  • Added test to accompany the FILTER_SANITIZE_ADD_SLASHES filter in 529baa9a3d
  • The session_array global is not used at all, so comment it out for now in 094c2aaf83
  • Remove these two old and outdated files we never use: in 2aff1cb226
  • Remove some dead code in 08f10ef47a
  • Fix HKEY registry path (not that it should matter, dead code, Anatol?) in b1864b0178
  • Removed the generated-tests library, this is a left Zöe's phpruntests repository it seems and never fully implemented. The only times this part of the code has been touched throughout the years has been minor PRs and entire php-src grep commits in ba138a3746
  • Fixed ZTS build in ba8f0615e1

Nikita Popov

  • Do not continue extract()ing after an exception has been thrown in e080fb6d92
  • Fix string.strip_tags filter in 791f07e4f0
  • Fix inverted stristr() argument order in mysqli test in 606de9e4a9
  • Add UPGRADING for mb_ereg changes in 41a6625c09
  • Warn if continue is used on switch in 04e3523b7d
  • Remove use of case-insensitive constants in tests in a632ecd224
  • Deprecate case-insensitive constants in 3588d8af12
  • Fix incorrect length calculation in 6e2c54d3e7
  • Fix off-by-one allocation in ee561ff2a2
  • Deprecate undocumented mbereg_* aliases in e6016ab20d
  • Deprecate non-string needles in string search functions in f4a9da389b
  • Deprecate defining a free-standing assert() function in 5c4047b339
  • Deprecate fgetss() and gzgetss() in d9acfa45b8
  • Deprecate string.strip_tags filter in 4a5b2101e5
  • Deprecate pdo_odbc.db2_instance_name in fb0e8c65b9
  • Add UPGRADING notes for deprecations in 4a528d46f5

Ondřej Surý

  • Use __cpuid_count() from cpuid.h instead of custom assembly in 1a078117b5

Pedro Magalhães

  • Support for samesite cookies with array syntax in 2b58ab23c6

Peter Kokot

  • Remove sqlite and xmlrpc extension versions from phpinfo output in 29000091b2
  • Add missing autoconf m4 quotes in b7368fe0d0
  • Fix bug #76392 in 67352cb2c0
  • Replace AC_CONFIG_HEADER with AC_CONFIG_HEADERS in 491f1477be
  • Bump Autoconf version in to 2.64 in 956446bdfa
  • Add missing INI directives to curl phpinfo in b585f043cb
  • Move GMP bug 74670 test file to tests dir in fef2029614
  • Remove unused Git attributes ident in 8d3f8ca12a
  • Remove obsolete macro AC_DECL_YYTEXT in df6bd506d4
  • Fix typos in code comments in a5e80b22e1
  • Replace obsolete AC_TRY_CPP with AC_PREPROC_IFELSE in 8d18d631b6
  • Remove unused Git ident attributes from zip extension in 0eabd5231b
  • Fix typos in code in cf8ef08e20
  • Upgrade AX_CHECK_COMPILE_FLAG macro to serial 6 in b60d8ab2e2
  • Trim trailing whitespaces in build files in cf3b852109
  • Fix typo in config.m4 in 0a01eae039
  • Replace obsolete AC_AIX with AC_USE_SYSTEM_EXTENSIONS in b12cece8d5
  • Remove unused libmbfl build system related files in 255e29f3bc
  • Remove unused PHP_PROG_LEX macro in 03b717d4cc
  • Replace obsolete AC_STRUCT_ST_BLKSIZE and AC_STRUCT_ST_RDEV in d2184efb7b
  • Trim trailing whitespaces in build files in ab702e4fde
  • Upgrade AX_FUNC_WHICH_GETHOSTBYNAME_R to serial 8 in 7394879adf
  • Upgrade deprecated AC_OUTPUT macro calls in daaf706df0
  • Remove obsolete AC_TYPE_SIGNAL in 17de277a2f
  • Replace obsolete AC_TRY_FOO with AC_FOO_IFELSE in 4371945b8b
  • Fix AC_RUN_IFELSE calls when cross-compiling in f2e4de8b56
  • Fix minor Autoconf coding style in b719aa41f4

Philip Prindeville

  • Add syslog.filter INI for filtering syslog messages in 2010c02e5c

Remi Collet

  • bump to 7.2.9-dev in 8bf21adb8c
  • Fixed bug #62596 add getallheaders (apache_request_headers) missing function in FPM add sapi_add_request_header in public API (was add_request_header) fix arginfo for fastcgi_finish_request fucntion in 0ea4013f10
  • NEW and UPGRADING in 587ab00698
  • NEWS in e069b0beba
  • add info about zend_class_entry.iterator_funcs in 0c3561892b

Sara Golemon


  • Fixed bug #76136 (stream_socket_get_name enclosed IPv6 in brackets) in 95013042bf


Stanislav Malyshev

Till Backhaus


Xinchen Hui

Yousif Masoud

  • fixes typo in daemonization DEBUG message after fork: acknoledge -> acknowledge in 9a21aa77af


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.