PHP 8.1 is currently only receiving security fixes. PHP 8.1.0RC1 is not the latest version in the series, and using this release is not recommended. PHP 8.1.29 is the latest in the series.
Downloads
Source Code
Git Clone
Use Git to clone the 8.1.0RC1 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.1.0RC1
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (
Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.
./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
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:8.1.0RC1-cli-alpine
Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.1.0RC1-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:8.1.0RC1-fpm-alpine
Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.1.0RC1-apache
Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.1.0RC1-fpm
Commit List
Alex Dowad
- Output illegal character marker for 4-byte illegal characters > 0x7FFFFFFF in 97b7fc893c
- Declare ARMSCII-8 conversion functions as 'static' in 9363b0b5a7
- Simplify code for converting UHC to Unicode in 03392ecd50
- Correct comment in
mbfilter_ucs4.c
in f6f0506c84 - Test behavior of 'long' illegal character markers in 51b9d7a5e1
- ISO-2022-JP-KDDI text conversion doesn't swallow PUA codepoints in 57a81af041
- ISO-2022-JP-MS treats truncated multi-byte chars as error in 51e0d323e4
- Add more tests for ISO-2022-JP-KDDI text conversion in ae4c956089
- Add more tests for ISO-2022-JP-MS text conversion in b2be85d11a
- Add more tests for ISO-2022-JP/JIS7/JIS8 text conversion in 299690a1cf
- Add more tests for SJIS text conversion in c7d47cbb4c
- Add more tests for SJIS-2004 text conversion in 0de4d6872e
- Extraneous trailing UCS-4 bytes are treated as error in d4561894ea
- Remove useless variable: mbfl_encoding_utf8_kddi_a_aliases in 6a693d2d33
- Add test suite for EUC-JP-WIN (or EUC-JP-MS) text encoding (and fix bugs) in 1865576694
- Add test suite for mobile variants of UTF-8 (and fix bugs) in e6f1a72235
- UCS-4 conversion does not pass BOM through to output in 97f8495e0f
- Add tests for '7bit' and '8bit' text encodings in mbstring in 34ef8f3ca2
- Add tests for UCS-2 text encoding in 79015b23aa
- Add tests for UCS-4 text conversion in 7472c82c45
- Add another test for UTF-16LE in 51a32ccaf4
- Add more tests for UTF-8 text conversion in 15ba73cee3
- mbstring no longer provides 'long' substitutions for erroneous input bytes in 776296e12f
- Use bool in mbfl_filt_conv_output_hex (rather than int) in f303fc8a9b
- Add test for
mb_str_split
on UCS-2 text in 671dcee01e - CP5022{0,1,2} supports 'IBM extension' codes from ku 115-119 in e3f6a9fbfe
- Add more tests for CP5022{0,1,2} text conversion in a0415b22ab
- Add another test for GB18030 text conversion in 51b6c687db
- Add another test for UTF-7 text conversion in 355464935d
- In UTF7-IMAP, reject the 2nd part of surrogate pair if it appears unexpectedly in 16a1e0a219
- Add more tests for UTF7-IMAP text conversion in df32267494
Alexey Zamorov
- Avoid dangling pointer in curl header.str in 8c292a2f9d
Ben Ramsey
- The master branch is now for 8.1.0RC1 in 90a6003835
Bob Weinand
- Add missing
zend_test
requirement to ffi test for bug80847 in 1440d15e00
Christoph M. Becker
- Fix #73122: Integer Overflow when concatenating strings in f1ce8d5f58
- Revert "Fix #73122: Integer Overflow when concatenating strings" in f3c45c1731
- Fix #73122: Integer Overflow when concatenating strings in 0b7dffb41f
- Fix #78819: Heap Overflow in msg_send in 9494b1cdc4
- Fix #81211: Symlinks are followed when creating PHAR archive in 2ff853aa11
- 7.3.31 is next in 521bd7ce15
- Fix #53580: During resize gdImageCopyResampled cause colors change in 526407ca35
- Fix #81400: Unterminated string in
dns_get_record()
results in edab9ad205
David CARLIER
- Enable
getrandom()
api on solaris-ish systems in GH-7417
Denis Ryabov
- Fix/improve handling of escaping in ini parser in d3a6054d44
Derick Rethans
- Backport speling fix in 3677db6386
- Upgrade timelib to 2021.08, which address some defects and performance in 2bf451b925
- Fixed test - the expected result was wrong in b0dd55b11c
dixyes
- Add haiku shared objects support in libtool in e4c23fa16b
DmitryMaksimov
- Dispatch using LANG_NEUTRAL instead of LOCALE_SYSTEM_DEFAULT in bdf53cc91f
Dmitry Stogov
- Reorder updates to avoid race conditions in 476c333a8e
- Fixed
ZEND_MAP_PTR_KIND_PTR
(it is not used) in 116fa65482 - JIT: Code generation for ROPE_INIT, ROPE_ADD and ROPE_END with STRING operands in c5ded13614
- JIT/x86: Merge load and test of EX_CALL_INFO() into single instruction in 1c9f8eb7b9
- Avoid redundand repeatable VM stack overflow checks in 0424ce0c15
- JIT: Optimize
zend_vm_stack_free_args()
in 67d6c2db9f - Avoid redundand argument type verification in 66a4437c3b
- JIT: Avoid redundand checks of number of passed arguments in c51b0d9702
- JIT: Avoid reloading of EX(run_time_cache) in 1347d90a23
- JIT: Eliminate load of op_array->run_time_cache__ptr and use immediate value for immutable op_arrays if it's known at compile time in 3565d02c6d
- JIT: Avoid reloading of EX(run_time_cache) in 608d568686
- JIT: Avoid useless EX(func) load in 96c3465513
- JIT: Allow keeping result of FETCH_CONSTANT in a CPU register in 8f601be101
- JIT: Better code for ADD/SUB/MUL and references in tracing JIT in 7690fa0bd8
- Fixed register allocation when ADD/SUB/MUL two references in tracing JIT in f1f4403dc2
- Rename ZREG_FCARG1x/ZREG_FCARG1a into ZREG_FCARG1 in dad5cfa868
- Fix
timelib_parse_zone()
performance problem in 6871a49b66
Go Kudo
- Fix nested namespaced typed property in
gen_stub.php
in GH-7418
hassan
- Fix path printing in ext_skel in GH-7387
Ikko Ashimine
- Fix typo in
file.c
in 6e5771148d
K
- Use FastZPP for SQLite3Stmt/SQLite3Result in GH-7392
- microptimization of SQLite3Result::fetchArray in f6d30cfba7
Kamil Tekiela
- Implement mysqlnd_set_persistent_string in GH-7371
MARiA so cute
- Improve the success rate when use
mkdir()
in multiprocessing environment in GH-7383
Máté Kocsis
- Declare a few missing function return types in c58a9f2a57
- Fix a few optimizer func info in 41ab369791
- Add support for generating optimizer function info from stubs in GH-7367
- Add more specific array type hints in 2141bee69d
- Fix function map production in e35a7fe919
- Clean up function map production slightly in d0897b3602
- DOMCharacterData::$data and DOMAttr::$value are writable in cdf2f3eb16
- Generate Zend,
ext/spl
andext/json
optimizer func info from stubs in bdfe0ab505 - Fix callable and iterable handling in 4a7a414735
- Generate a few missing optimizer function entries from stubs in d379044066
- Generate optimizer func info from stubs for a few extensions - part 2 in GH-7401
- Generate optimizer func info from stubs for
ext/date
in GH-7403 - Make a few unuseful DOMEntity properties readonly in GH-7406
- Generate optimizer func info from stubs for
ext/sodium
in GH-7404 - Sync
ext/mysqli
optimizer func info entries with the stubs in 780293baec - Update property read handler comments for DOMEntity in 267c24e9ee
- Fix a few
ext/date
return types in 5e424d2884 - Generate optimizer func info from stubs for
ext/curl
,ext/mysqli
,ext/pcre
in GH-7407 - Fix mysqli stub alias verification issues in 7d3cdb3681
- Generate optimizer func info from stubs for
ext/gd
andext/pgsql
in GH-7408 - Generate optimizer func info from stubs for various extensions in GH-7409
- Fix func info for
str_replace()
andstr_ireplace()
in 492821a302 - Generate optimizer func info from stubs for
ext/standard
- part 1 in GH-7413 - Fix a few func info entries in cdf0550fe5
- Generate optimizer func info from stubs for
ext/standard
- part 2 in GH-7414 - Add support for generating MAY_BE_ARRAY_OF_REF func info flag in GH-7416
- Use camelCase method names in OCICollection and OCILob in GH-7405
- Specify a few array func info entries in GH-7425
- Generate optimizer func info from stubs for
ext/standard
- part 3 in GH-7426 - Fix typo in
gen_stub.php
in a57b713d66 - Fix default value of $flags in
oci_fetch_all()
in GH-7429 - Make default value more explicit in 70f516d3e8
- Fix typo in method name in
gen_stub.php
in 39ede67e17 - Remove unused variable from property generation code in edf2947a5d
Nikita Popov
- Assert that file cache does not contain references in e86a0a905d
- Backport Laravel test hack in 51147e2f18
- Fix repeated file cache unserialization of zval string in de7ba3e737
- Test file_cache prime shm + use file combination in 3454ea36a4
- Test file cache mix (file -> shm) in a991fe51f8
- Declare Directory properties in 29c6eb6cf5
- Only assign $severity for ErrorException in 6cc4e3280e
- Declare SoapParam properties in 030bb36ed7
- Declare SoapVar properties in c58c926034
- Declare SoapServer::$service property in bdf8b9ed2d
- Declare SoapHeader properties in 7d4f2f5392
- Simplify constructor invocation in
ext/soap
in e6d4b3077d - Simplify some strtolower operations in
ext/soap
in e861cb5c31 - Declare some SoapClient properties in 018cb891cf
- Don't convert Error exception to SoapFault in 44befbdc01
- Declare SoapFault properties in 32d663e198
- Use separate property to request digit auth in aa4898ef2e
- Remove dead code in b3b1658492
- Declare remaining SoapClient properties in e6c6abf6b4
- Make internal SoapServer/SoapClient state private in 6b05d958aa
- Move derefs into accessor macros in 50484b59cd
- Fix missing string copy in de6cf68ac4
- Slightly clean up cookies handling in 841d0b30eb
- Remove
php_user_filter
::$filter property in 7f7a90b2bc - Declare
php_user_filter
::$stream property in 05a217927a - Handle resource table reallocation during shutdown in 2ff496e871
- Mark
PDO::setAttribute()
$value as mixed in 2e343fcb42 - Drop gz aliases from func info in 8c67abb67f
- Fixed bug #81377 in a40ccd758c
- Don't use sentinel value for unicode property lookup in 3be94217f4
- Return bool from
php_unicode_is_prop()
in d2073179e3 - Combine punctuation into one character group in f458b16041
- Combine control into one character group in 425c2e3ba1
- Add comments to grouped character properties in 2dafb0e30f
- Mark private compiler functions as static in 07984435ae
- Fix AST print of first class callable in anon class expr in b964d007e3
- Explicitly store real map ptr base in 6434c93a27
- Initialize method_lcname to suppress maybe-uninitialized warning in fa032764db
- Limit internal function calls in execute fuzzer in cae80ef552
- Limit internal function args during fuzzing in 93a88a1d4c
imagecolorsforindex()
cannot return false in cba166469d- Fix use after free when rebinding __call closure in 4fcf0db649
- Fix
Closure::call()
on internal method closure in eda9f5f740 - Remove incorrect refcount info for
addcslashes()
in 9d70946b16 - Flush filter during non-strict encoding detection in 43cb2548f7
- Avoid string copy in
get_cfg_var()
in 51a504c8be str_replace()
can return the original string in 0f7e0cf34b- Ensure stub files are processed in predictable order in fab1222128
- Fix strict-prototypes warning in 0f926815ca
- Don't expose wchar encoding to users in GH-7415
- Use HAVE_SYS_PARAM_H in d16992afe2
- Add UPGRADING for ini parser changes in a968055b77
- Fix type hint in
gen_stub.php
in c1c1822e8c - Error on resource ID space overflow in 501f1a45f5
- Use
array_set_zval_key()
inzend_ast_add_array_element()
in 7d6a7e78fc - Export
zend_use_resource_as_offset()
in 5b2ddf5a17 - Minor cleanup in gen_stubs in 52d3af1790
- Add missing const qualitier in
zend_register_internal_enum()
in c03f97cd1c - Support generating internal enum decl from stubs in 32d48212ea
- Mark private function as static in 9b170a41a7
- Use
zend_long
for resource ID in 14f599ea7d - Make it easier to run curl tests standalone in 992b5f2e08
- Fix
curl_copy_handle()
with CURLINFO_HEADER_OUT in 30e791ed56 - Restore dev version in 27901e0f6a
- Add PHP-8.1 to azure pipelines in c4d72cea5c
- Add PHP-8.1 to scheduled builds as well in 16112a54fa
- Fix bug #81405: Restore old
PDO::PARAM_
* values in 1e012ecb3f
Patrick Allaert
- Fixed Dmitry Stogov email in d630bbdc06
- Prepare for PHP 8.1.0RC1 in 5764414eb8
- Prepare for PHP 8.1.0RC1 in 4025cf2875
Peter Cowburn
- Use &Properties; entity in xpointer for inherited properties in class synopses in GH-7400
Stanislav Malyshev
- Update NEWS in b2008ab97d
- Fix test in b815645aac