Skip to content

Commit 19f3312

Browse files
committed
Merge tag 'php-8.2.29' into was-8.2.x
Tag for php-8.2.29
2 parents 5dc5528 + a6855fa commit 19f3312

39 files changed

+494
-157
lines changed

.github/actions/freebsd/action.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
name: FreeBSD
2+
inputs:
3+
configurationParameters:
4+
default: ''
5+
required: false
26
runs:
37
using: composite
48
steps:
@@ -27,7 +31,6 @@ runs:
2731
bzip2 \
2832
t1lib \
2933
gmp \
30-
tidyp \
3134
libsodium \
3235
libzip \
3336
libxml2 \
@@ -80,7 +83,9 @@ runs:
8083
--with-mhash \
8184
--with-sodium \
8285
--with-config-file-path=/etc \
83-
--with-config-file-scan-dir=/etc/php.d
86+
--with-config-file-scan-dir=/etc/php.d \
87+
${{ inputs.configurationParameters }}
88+
8489
gmake -j2
8590
mkdir /etc/php.d
8691
gmake install > /dev/null

.github/scripts/windows/build.bat

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ if not exist "%SDK_RUNNER%" (
4343
exit /b 3
4444
)
4545

46-
cmd /c %SDK_RUNNER% -t .github\scripts\windows\build_task.bat
46+
for /f "delims=" %%T in ('call .github\scripts\windows\find-vs-toolset.bat %PHP_BUILD_CRT%') do set "VS_TOOLSET=%%T"
47+
echo Got VS Toolset %VS_TOOLSET%
48+
cmd /c %SDK_RUNNER% -s %VS_TOOLSET% -t .github\scripts\windows\build_task.bat
4749
if %errorlevel% neq 0 exit /b 3
4850

4951
exit /b 0
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
@echo off
2+
3+
setlocal enabledelayedexpansion
4+
5+
if "%~1"=="" (
6+
echo ERROR: Usage: %~nx0 [vc14^|vc15^|vs16^|vs17]
7+
exit /b 1
8+
)
9+
10+
set "toolsets_vc14=14.0"
11+
set "toolsets_vc15="
12+
set "toolsets_vs16="
13+
set "toolsets_vs17="
14+
15+
16+
for /f "usebackq tokens=*" %%I in (`vswhere.exe -latest -find "VC\Tools\MSVC"`) do set "MSVCDIR=%%I"
17+
18+
if not defined MSVCDIR (
19+
echo ERROR: could not locate VC\Tools\MSVC
20+
exit /b 1
21+
)
22+
23+
for /f "delims=" %%D in ('dir /b /ad "%MSVCDIR%"') do (
24+
for /f "tokens=1,2 delims=." %%A in ("%%D") do (
25+
set "maj=%%A" & set "min=%%B"
26+
if "!maj!"=="14" (
27+
if !min! LEQ 9 (
28+
set "toolsets_vc14=%%D"
29+
) else if !min! LEQ 19 (
30+
set "toolsets_vc15=%%D"
31+
) else if !min! LEQ 29 (
32+
set "toolsets_vs16=%%D"
33+
) else (
34+
set "toolsets_vs17=%%D"
35+
)
36+
)
37+
)
38+
)
39+
40+
set "KEY=%~1"
41+
set "VAR=toolsets_%KEY%"
42+
call set "RESULT=%%%VAR%%%"
43+
if defined RESULT (
44+
echo %RESULT%
45+
exit /b 0
46+
) else (
47+
echo ERROR: no toolset found for %KEY%
48+
exit /b 1
49+
)

.github/scripts/windows/test.bat

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ if not exist "%SDK_RUNNER%" (
1111
exit /b 3
1212
)
1313

14-
cmd /c %SDK_RUNNER% -t .github\scripts\windows\test_task.bat
14+
for /f "delims=" %%T in ('call .github\scripts\windows\find-vs-toolset.bat %PHP_BUILD_CRT%') do set "VS_TOOLSET=%%T"
15+
cmd /c %SDK_RUNNER% -s %VS_TOOLSET% -t .github\scripts\windows\test_task.bat
1516
if %errorlevel% neq 0 exit /b 3
1617

1718
exit /b 0

.github/workflows/nightly.yml

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,21 @@ on:
2323
run_macos_arm64:
2424
required: true
2525
type: boolean
26+
run_freebsd_zts:
27+
required: true
28+
type: boolean
2629
ubuntu_version:
2730
required: true
2831
type: string
2932
windows_version:
3033
required: true
3134
type: string
35+
vs_crt_version:
36+
required: true
37+
type: string
38+
skip_laravel:
39+
required: true
40+
type: boolean
3241
skip_symfony:
3342
required: true
3443
type: boolean
@@ -550,7 +559,7 @@ jobs:
550559
git clone "https://github.com/amphp/$repository.git" "amphp-$repository" --depth 1
551560
cd "amphp-$repository"
552561
git rev-parse HEAD
553-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
562+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
554563
vendor/bin/phpunit || EXIT_CODE=$?
555564
if [ ${EXIT_CODE:-0} -gt 128 ]; then
556565
X=1;
@@ -559,12 +568,12 @@ jobs:
559568
done
560569
exit $X
561570
- name: Test Laravel
562-
if: ${{ !cancelled() }}
571+
if: ${{ !cancelled() && !inputs.skip_laravel }}
563572
run: |
564573
git clone https://github.com/laravel/framework.git --depth=1
565574
cd framework
566575
git rev-parse HEAD
567-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
576+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
568577
# Hack to disable a test that hangs
569578
php -r '$c = file_get_contents("tests/Filesystem/FilesystemTest.php"); $c = str_replace("public function testSharedGet()", "#[\\PHPUnit\\Framework\\Attributes\\Group('"'"'skip'"'"')]\n public function testSharedGet()", $c); file_put_contents("tests/Filesystem/FilesystemTest.php", $c);'
570579
php vendor/bin/phpunit --exclude-group skip || EXIT_CODE=$?
@@ -581,7 +590,7 @@ jobs:
581590
git clone "https://github.com/reactphp/$repository.git" "reactphp-$repository" --depth 1
582591
cd "reactphp-$repository"
583592
git rev-parse HEAD
584-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
593+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
585594
vendor/bin/phpunit || EXIT_CODE=$?
586595
if [ $[EXIT_CODE:-0} -gt 128 ]; then
587596
X=1;
@@ -595,7 +604,7 @@ jobs:
595604
git clone https://github.com/revoltphp/event-loop.git --depth=1
596605
cd event-loop
597606
git rev-parse HEAD
598-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
607+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
599608
vendor/bin/phpunit || EXIT_CODE=$?
600609
if [ ${EXIT_CODE:-0} -gt 128 ]; then
601610
exit 1
@@ -606,7 +615,7 @@ jobs:
606615
git clone https://github.com/symfony/symfony.git --depth=1
607616
cd symfony
608617
git rev-parse HEAD
609-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
618+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
610619
php ./phpunit install
611620
# Test causes a heap-buffer-overflow but I cannot reproduce it locally...
612621
php -r '$c = file_get_contents("src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php"); $c = str_replace("public function testSanitizeDeepNestedString()", "/** @group skip */\n public function testSanitizeDeepNestedString()", $c); file_put_contents("src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php", $c);'
@@ -627,15 +636,15 @@ jobs:
627636
git clone https://github.com/sebastianbergmann/phpunit.git --branch=main --depth=1
628637
cd phpunit
629638
git rev-parse HEAD
630-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
639+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
631640
php ./phpunit || EXIT_CODE=$?
632641
if [ ${EXIT_CODE:-0} -gt 128 ]; then
633642
exit 1
634643
fi
635644
- name: 'Symfony Preloading'
636645
if: ${{ !cancelled() && !inputs.skip_symfony }}
637646
run: |
638-
php /usr/bin/composer create-project symfony/symfony-demo symfony_demo --no-progress --ignore-platform-reqs
647+
php /usr/bin/composer create-project symfony/symfony-demo symfony_demo --no-progress --ignore-platform-req=php+
639648
cd symfony_demo
640649
git rev-parse HEAD
641650
sed -i 's/PHP_SAPI/"cli-server"/g' var/cache/dev/App_KernelDevDebugContainer.preload.php
@@ -646,7 +655,7 @@ jobs:
646655
git clone https://github.com/WordPress/wordpress-develop.git wordpress --depth=1
647656
cd wordpress
648657
git rev-parse HEAD
649-
php /usr/bin/composer install --no-progress --ignore-platform-reqs
658+
php /usr/bin/composer install --no-progress --ignore-platform-req=php+
650659
cp wp-tests-config-sample.php wp-tests-config.php
651660
sed -i 's/youremptytestdbnamehere/test/g' wp-tests-config.php
652661
sed -i 's/yourusernamehere/root/g' wp-tests-config.php
@@ -1028,7 +1037,7 @@ jobs:
10281037
PHP_BUILD_OBJ_DIR: C:\obj
10291038
PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk
10301039
PHP_BUILD_SDK_BRANCH: php-sdk-2.3.0
1031-
PHP_BUILD_CRT: ${{ inputs.windows_version == '2022' && 'vs17' || 'vs16' }}
1040+
PHP_BUILD_CRT: ${{ inputs.vs_crt_version }}
10321041
PLATFORM: ${{ matrix.x64 && 'x64' || 'x86' }}
10331042
THREAD_SAFE: "${{ matrix.zts && '1' || '0' }}"
10341043
INTRINSICS: "${{ matrix.zts && 'AVX2' || '' }}"
@@ -1049,7 +1058,13 @@ jobs:
10491058
- name: Test
10501059
run: .github/scripts/windows/test.bat
10511060
FREEBSD:
1052-
name: FREEBSD
1061+
strategy:
1062+
fail-fast: false
1063+
matrix:
1064+
zts: [true, false]
1065+
exclude:
1066+
- zts: ${{ !inputs.run_freebsd_zts && true || '*never*' }}
1067+
name: "FREEBSD_${{ matrix.zts && 'ZTS' || 'NTS' }}"
10531068
runs-on: ubuntu-latest
10541069
steps:
10551070
- name: git checkout
@@ -1058,3 +1073,6 @@ jobs:
10581073
ref: ${{ inputs.branch }}
10591074
- name: FreeBSD
10601075
uses: ./.github/actions/freebsd
1076+
with:
1077+
configurationParameters: >-
1078+
--${{ matrix.zts && 'enable' || 'disable' }}-zts

.github/workflows/push.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ jobs:
194194
WINDOWS:
195195
if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
196196
name: WINDOWS_X64_ZTS
197-
runs-on: windows-2019
197+
runs-on: windows-2022
198198
env:
199199
PHP_BUILD_CACHE_BASE_DIR: C:\build-cache
200200
PHP_BUILD_OBJ_DIR: C:\obj
@@ -218,6 +218,7 @@ jobs:
218218
- name: Test
219219
run: .github/scripts/windows/test.bat
220220
FREEBSD:
221+
if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
221222
name: FREEBSD
222223
runs-on: ubuntu-latest
223224
steps:

.github/workflows/root.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,13 @@ jobs:
5555
run_alpine: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5656
run_linux_ppc64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5757
run_macos_arm64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
58+
run_freebsd_zts: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 3) || matrix.branch.version[0] >= 9 }}
5859
ubuntu_version: ${{
5960
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
6061
|| '22.04' }}
61-
windows_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9) && '2022' || '2019' }}
62+
windows_version: '2022'
63+
vs_crt_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) && 'vs17') || 'vs16' }}
64+
skip_laravel: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6265
skip_symfony: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6366
skip_wordpress: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6467
secrets: inherit

NEWS

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3+
03 Jul 2025, PHP 8.2.29
4+
5+
- PGSQL:
6+
. Fixed GHSA-hrwm-9436-5mv3 (pgsql extension does not check for errors during
7+
escaping). (CVE-2025-1735) (Jakub Zelenka)
8+
9+
- SOAP:
10+
. Fixed GHSA-453j-q27h-5p8x (NULL Pointer Dereference in PHP SOAP Extension
11+
via Large XML Namespace Prefix). (CVE-2025-6491) (Lekssays, nielsdos)
12+
13+
- Standard:
14+
. Fixed GHSA-3cr5-j632-f35r (Null byte termination in hostnames).
15+
(CVE-2025-1220) (Jakub Zelenka)
16+
317
13 Mar 2025, PHP 8.2.28
418

519
- Core:
@@ -12,7 +26,7 @@ PHP NEWS
1226
when requesting a redirected resource). (CVE-2025-1219) (timwolla)
1327

1428
- Streams:
15-
. Fixed GHSA-hgf54-96fm-v528 (Stream HTTP wrapper header check might omit
29+
. Fixed GHSA-hgf5-96fm-v528 (Stream HTTP wrapper header check might omit
1630
basic auth header). (CVE-2025-1736) (Jakub Zelenka)
1731
. Fixed GHSA-52jp-hrpf-2jff (Stream HTTP wrapper truncate redirect location
1832
to 1024 bytes). (CVE-2025-1861) (Jakub Zelenka)

Zend/tests/bug40770.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Bug #40770 (Apache child exits when PHP memory limit reached)
44
memory_limit=8M
55
--SKIPIF--
66
<?php
7+
if (PHP_OS_FAMILY === 'Windows' && version_compare(PHP_VERSION, '8.4', '<')) {
8+
die("xfail fails on Windows Server 2022 and newer.");
9+
}
710
$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
811
if ($zend_mm_enabled === "0") {
912
die("skip Zend MM disabled");

Zend/tests/bug70258.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Bug #70258 (Segfault if do_resize fails to allocated memory)
44
memory_limit=2M
55
--SKIPIF--
66
<?php
7+
if (PHP_OS_FAMILY === 'Windows') {
8+
die("xfail fails on Windows Server 2022 and newer.");
9+
}
710
$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
811
if ($zend_mm_enabled === "0") {
912
die("skip Zend MM disabled");

0 commit comments

Comments
 (0)