Skip to content

Commit 06c3c00

Browse files
committed
Merge tag 'php-8.3.28' into was-8.3.x
Tag for php-8.3.28
2 parents cafd64a + 7f82d94 commit 06c3c00

File tree

87 files changed

+986
-337
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+986
-337
lines changed

.github/CODEOWNERS

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616

1717
/.github @TimWolla
1818
/build/gen_stub.php @kocsismate
19-
/ext/bcmath @Girgias @nielsdos @SakiTakamachi
19+
/ext/bcmath @Girgias @ndossche @SakiTakamachi
2020
/ext/curl @adoy
2121
/ext/date @derickr
2222
/ext/dba @Girgias
23-
/ext/dom @nielsdos
23+
/ext/dom @ndossche
2424
/ext/ffi @dstogov
2525
/ext/gd @devnexen
2626
/ext/gettext @devnexen
2727
/ext/gmp @Girgias
2828
/ext/imap @Girgias
2929
/ext/intl @devnexen
3030
/ext/json @bukka
31-
/ext/libxml @nielsdos
31+
/ext/libxml @ndossche
3232
/ext/mbstring @alexdowad @youkidearitai
3333
/ext/mysqli @bukka @kamil-tekiela
3434
/ext/mysqlnd @bukka @kamil-tekiela @SakiTakamachi
@@ -47,15 +47,16 @@
4747
/ext/random @TimWolla @zeriyoshi
4848
/ext/reflection @DanielEScherzer
4949
/ext/session @Girgias
50-
/ext/simplexml @nielsdos
51-
/ext/soap @nielsdos
50+
/ext/simplexml @ndossche
51+
/ext/soap @ndossche
5252
/ext/sockets @devnexen
5353
/ext/spl @Girgias
5454
/ext/standard @bukka
55-
/ext/xml @nielsdos
56-
/ext/xmlreader @nielsdos
57-
/ext/xmlwriter @nielsdos
58-
/ext/xsl @nielsdos
55+
/ext/tidy @ndossche
56+
/ext/xml @ndossche
57+
/ext/xmlreader @ndossche
58+
/ext/xmlwriter @ndossche
59+
/ext/xsl @ndossche
5960
/main @bukka
6061
/sapi/fpm @bukka
6162
/Zend/Optimizer @dstogov

.github/actions/notify-slack/action.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

.github/nightly_matrix.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ function get_current_version(): array {
4949

5050
$trigger = $argv[1] ?? 'schedule';
5151
$attempt = (int) ($argv[2] ?? 1);
52-
$monday = date('w', time()) === '1';
53-
$discard_cache = $monday
52+
$sunday = date('w', time()) === '0';
53+
$discard_cache = $sunday
5454
|| ($trigger === 'schedule' && $attempt !== 1)
5555
|| $trigger === 'workflow_dispatch';
5656
if ($discard_cache) {

.github/scripts/windows/test_task.bat

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ if %errorlevel% neq 0 exit /b 3
3838
rem setup PostgreSQL related exts
3939
set PGUSER=postgres
4040
set PGPASSWORD=Password12!
41-
rem set PGSQL_TEST_CONNSTR=host=127.0.0.1 dbname=test port=5432 user=postgres password=Password12!
42-
echo ^<?php $conn_str = "host=127.0.0.1 dbname=test port=5432 user=%PGUSER% password=%PGPASSWORD%"; ?^> >> "./ext/pgsql/tests/config.inc"
41+
set PGSQL_TEST_CONNSTR=host=127.0.0.1 dbname=test port=5432 user=%PGUSER% password=%PGPASSWORD%
4342
set PDO_PGSQL_TEST_DSN=pgsql:host=127.0.0.1 port=5432 dbname=test user=%PGUSER% password=%PGPASSWORD%
4443
set TMP_POSTGRESQL_BIN=%PGBIN%
4544
"%TMP_POSTGRESQL_BIN%\createdb.exe" test
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Nightly results
2+
on:
3+
workflow_run:
4+
workflows:
5+
- Nightly
6+
types:
7+
- completed
8+
jobs:
9+
on-failure:
10+
runs-on: ubuntu-latest
11+
if: ${{ github.repository == 'php/php-src' && github.event.workflow_run.conclusion == 'failure' }}
12+
steps:
13+
- run: |
14+
export DEBIAN_FRONTEND=noninteractive
15+
sudo apt-get install -y curl
16+
curl -X POST -H 'Content-type: application/json' --data '{"attachments": [{"text": "Job(s) in *nightly* failed", "footer": "<${{ github.event.workflow_run.html_url }}|View Run>", "color": "danger", "mrkdwn_in": ["text"]}]}' ${{ secrets.ACTION_MONITORING_SLACK }}

.github/workflows/nightly.yml

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,6 @@ jobs:
136136
-d opcache.enable_cli=1
137137
- name: Extra tests
138138
uses: ./.github/actions/extra-tests
139-
- name: Notify Slack
140-
if: failure()
141-
uses: ./.github/actions/notify-slack
142-
with:
143-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
144-
145139
LINUX_X64:
146140
services:
147141
mysql:
@@ -273,11 +267,6 @@ jobs:
273267
uses: ./.github/actions/extra-tests
274268
- name: Verify generated files are up to date
275269
uses: ./.github/actions/verify-generated-files
276-
- name: Notify Slack
277-
if: failure()
278-
uses: ./.github/actions/notify-slack
279-
with:
280-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
281270
LINUX_X32:
282271
strategy:
283272
fail-fast: false
@@ -362,11 +351,6 @@ jobs:
362351
-d opcache.enable_cli=1
363352
- name: Extra tests
364353
uses: ./.github/actions/extra-tests
365-
- name: Notify Slack
366-
if: failure()
367-
uses: ./.github/actions/notify-slack
368-
with:
369-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
370354
MACOS:
371355
strategy:
372356
fail-fast: false
@@ -425,11 +409,6 @@ jobs:
425409
uses: ./.github/actions/extra-tests
426410
- name: Verify generated files are up to date
427411
uses: ./.github/actions/verify-generated-files
428-
- name: Notify Slack
429-
if: failure()
430-
uses: ./.github/actions/notify-slack
431-
with:
432-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
433412
COVERAGE_DEBUG_NTS:
434413
if: inputs.branch == 'master'
435414
services:
@@ -491,11 +470,6 @@ jobs:
491470
fail_ci_if_error: true
492471
token: ${{ secrets.CODECOV_TOKEN }}
493472
verbose: true
494-
- name: Notify Slack
495-
if: failure()
496-
uses: ./.github/actions/notify-slack
497-
with:
498-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
499473
COMMUNITY:
500474
strategy:
501475
fail-fast: false
@@ -683,11 +657,6 @@ jobs:
683657
if [ $EXIT_CODE -gt 128 ]; then
684658
exit 1
685659
fi
686-
- name: Notify Slack
687-
if: failure()
688-
uses: ./.github/actions/notify-slack
689-
with:
690-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
691660
OPCACHE_VARIATION:
692661
services:
693662
mysql:
@@ -774,11 +743,6 @@ jobs:
774743
-d opcache.file_cache_only=1
775744
- name: Verify generated files are up to date
776745
uses: ./.github/actions/verify-generated-files
777-
- name: Notify Slack
778-
if: failure()
779-
uses: ./.github/actions/notify-slack
780-
with:
781-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
782746
MSAN:
783747
name: MSAN
784748
runs-on: ubuntu-${{ inputs.ubuntu_version }}
@@ -866,11 +830,6 @@ jobs:
866830
-d opcache.enable_cli=1
867831
- name: Verify generated files are up to date
868832
uses: ./.github/actions/verify-generated-files
869-
- name: Notify Slack
870-
if: failure()
871-
uses: ./.github/actions/notify-slack
872-
with:
873-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
874833
LIBMYSQLCLIENT:
875834
name: LIBMYSQLCLIENT
876835
runs-on: ubuntu-${{ inputs.ubuntu_version }}
@@ -913,11 +872,6 @@ jobs:
913872
withMysqli: ${{ inputs.libmysqlclient_with_mysqli }}
914873
- name: Verify generated files are up to date
915874
uses: ./.github/actions/verify-generated-files
916-
- name: Notify Slack
917-
if: failure()
918-
uses: ./.github/actions/notify-slack
919-
with:
920-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
921875
PECL:
922876
if: inputs.branch == 'master'
923877
runs-on: ubuntu-22.04
@@ -1025,11 +979,6 @@ jobs:
1025979
/opt/php/bin/phpize
1026980
./configure --prefix=/opt/php --with-php-config=/opt/php/bin/php-config
1027981
make -j$(/usr/bin/nproc)
1028-
- name: Notify Slack
1029-
if: failure()
1030-
uses: ./.github/actions/notify-slack
1031-
with:
1032-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
1033982
WINDOWS:
1034983
strategy:
1035984
fail-fast: false

.github/workflows/root.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@ jobs:
3131
- name: Generate Matrix
3232
id: set-matrix
3333
run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.head_ref || github.ref_name }}"
34-
- name: Notify Slack
35-
if: failure()
36-
uses: ./.github/actions/notify-slack
37-
with:
38-
token: ${{ secrets.ACTION_MONITORING_SLACK }}
3934
NIGHTLY:
4035
needs: GENERATE_MATRIX
4136
name: ${{ matrix.branch.ref }}

EXTENSIONS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,7 @@ EXTENSION: tidy
510510
PRIMARY MAINTAINER: John Coggeshall <[email protected]> (2003 - 2006)
511511
Ilia Alshanetsky <[email protected]> (2003 - 2009)
512512
Nuno Lopes <[email protected]> (2006 - 2012)
513+
Niels Dossche <[email protected]> (2025 - 2025)
513514
MAINTENANCE: Maintained
514515
STATUS: Working
515516
-------------------------------------------------------------------------------

NEWS

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,107 @@
11
PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3+
20 Nov 2025, PHP 8.3.28
4+
5+
- Core:
6+
. Fixed bug GH-19934 (CGI with auto_globals_jit=0 causes uouv). (ilutov)
7+
. Fixed bug GH-20073 (Assertion failure in WeakMap offset operations on
8+
reference). (nielsdos)
9+
. Fixed bug GH-19844 (Don't bail when closing resources on shutdown). (ilutov)
10+
. Fixed bug GH-20177 (Accessing overridden private property in
11+
get_object_vars() triggers assertion error). (ilutov)
12+
. Fixed bug GH-20183 (Stale EG(opline_before_exception) pointer through eval).
13+
(ilutov)
14+
15+
- DOM:
16+
. Partially fixed bug GH-16317 (DOM classes do not allow
17+
__debugInfo() overrides to work). (nielsdos)
18+
19+
- Exif:
20+
. Fix possible memory leak when tag is empty. (nielsdos)
21+
22+
- FPM:
23+
. Fixed bug GH-19974 (fpm_status_export_to_zval segfault for parallel
24+
execution). (Jakub Zelenka, txuna)
25+
26+
- FTP:
27+
. Fixed bug GH-20240 (FTP with SSL: ftp_fput(): Connection timed out on
28+
successful writes). (nielsdos)
29+
30+
- GD:
31+
. Fixed bug GH-20070 (Return type violation in imagefilter when an invalid
32+
filter is provided). (Girgias)
33+
34+
- Intl:
35+
. Fix memory leak on error in locale_filter_matches(). (nielsdos)
36+
37+
- LibXML:
38+
. Fix not thread safe schema/relaxng calls. (SpencerMalone, nielsdos)
39+
40+
- MySQLnd:
41+
. Fixed bug GH-8978 (SSL certificate verification fails (port doubled)).
42+
(nielsdos)
43+
. Fixed bug GH-20122 (getColumnMeta() for JSON-column in MySQL). (nielsdos)
44+
45+
- Opcache:
46+
. Fixed bug GH-20081 (access to uninitialized vars in preload_load()).
47+
(Arnaud)
48+
. Fixed bug GH-20121 (JIT broken in ZTS builds on MacOS 15).
49+
(Arnaud, Shivam Mathur)
50+
51+
- PgSql:
52+
. Fix memory leak when first string conversion fails. (nielsdos)
53+
. Fix segfaults when attempting to fetch row into a non-instantiable class
54+
name. (Girgias, nielsdos)
55+
56+
- Phar:
57+
. Fix memory leak of argument in webPhar. (nielsdos)
58+
. Fix memory leak when setAlias() fails. (nielsdos)
59+
. Fix a bunch of memory leaks in phar_parse_zipfile() error handling.
60+
(nielsdos)
61+
. Fix file descriptor/memory leak when opening central fp fails. (nielsdos)
62+
. Fix memleak+UAF when opening temp stream in buildFromDirectory() fails.
63+
(nielsdos)
64+
. Fix potential buffer length truncation due to usage of type int instead
65+
of type size_t. (Girgias)
66+
. Fix memory leak when openssl polyfill returns garbage. (nielsdos)
67+
. Fix file descriptor leak in phar_zip_flush() on failure. (nielsdos)
68+
. Fix memory leak when opening temp file fails while trying to open
69+
gzip-compressed archive. (nielsdos)
70+
. Fixed bug GH-20302 (Freeing a phar alias may invalidate
71+
PharFileInfo objects). (nielsdos)
72+
73+
- Random:
74+
. Fix Randomizer::__serialize() w.r.t. INDIRECTs. (nielsdos)
75+
76+
- SimpleXML:
77+
. Partially fixed bug GH-16317 (SimpleXML does not allow __debugInfo() overrides
78+
to work). (nielsdos)
79+
80+
- Standard:
81+
. Fix shm corruption with coercion in options of unserialize(). (nielsdos)
82+
83+
- Streams:
84+
. Fixed bug GH-19798: XP_SOCKET XP_SSL (Socket stream modules): Incorrect
85+
condition for Win32/Win64. (Jakub Zelenka)
86+
87+
- Tidy:
88+
. Fixed GH-19021 (improved tidyOptGetCategory detection).
89+
(arjendekorte, David Carlier, Peter Kokot)
90+
. Fix UAF in tidy when tidySetErrorBuffer() fails. (nielsdos)
91+
92+
- XMLReader:
93+
. Fix arginfo/zpp violations when LIBXML_SCHEMAS_ENABLED is not available.
94+
(nielsdos)
95+
96+
- Windows:
97+
. Fix GH-19722 (_get_osfhandle asserts in debug mode when given a socket).
98+
(dktapps)
99+
100+
- Zip:
101+
. Fix memory leak when passing enc_method/enc_password is passed as option
102+
for ZipArchive::addGlob()/addPattern() and with consecutive calls.
103+
(David Carlier)
104+
3105
23 Oct 2025, PHP 8.3.27
4106

5107
- Core:

Zend/tests/gh19844.phpt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
--TEST--
2+
GH-19844: Bail from stream_close() in zend_shutdown_executor_values()
3+
--SKIPIF--
4+
<?php
5+
if (substr(PHP_OS, 0, 3) == 'WIN') die('skip Aborts with STATUS_BAD_FUNCTION_TABLE on Windows');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
class Test {
11+
public $context;
12+
private static $nested = false;
13+
14+
function stream_open() {
15+
return true;
16+
}
17+
18+
function stream_read() {
19+
return '.';
20+
}
21+
function stream_set_option() {}
22+
function stream_stat() {}
23+
24+
function stream_eof() {
25+
if (!Test::$nested) {
26+
Test::$nested = true;
27+
include 'Test://';
28+
}
29+
@trigger_error('Bail', E_USER_ERROR);
30+
}
31+
32+
function stream_close() {
33+
@trigger_error('Bail', E_USER_ERROR);
34+
}
35+
}
36+
37+
stream_wrapper_register('Test', Test::class);
38+
include 'Test://';
39+
40+
?>
41+
--EXPECTF--
42+
Fatal error: Bail in %s on line %d
43+
44+
Fatal error: Bail in %s on line %d
45+
46+
Fatal error: Bail in %s on line %d

0 commit comments

Comments
 (0)