From 57297ddb4f690b8c9a670425a9f8def82194c058 Mon Sep 17 00:00:00 2001 From: arshidkv12 Date: Fri, 6 Nov 2026 13:40:50 +0530 Subject: [PATCH 1/2] ext/standard: Fix stale stat cache after ftruncate() --- ext/standard/file.c | 6 ++++- .../tests/file/ftruncate_stat_cache.phpt | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/file/ftruncate_stat_cache.phpt diff --git a/ext/standard/file.c b/ext/standard/file.c index 933747ef8cf9..992b60db5d41 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -1374,7 +1374,11 @@ PHP_FUNCTION(ftruncate) RETURN_FALSE; } - RETURN_BOOL(0 == php_stream_truncate_set_size(stream, size)); + if (php_stream_truncate_set_size(stream, size) == 0) { + php_clear_stat_cache(0, NULL, 0); + RETURN_TRUE; + } + RETURN_FALSE; } /* }}} */ PHPAPI void php_fstat(php_stream *stream, zval *return_value) diff --git a/ext/standard/tests/file/ftruncate_stat_cache.phpt b/ext/standard/tests/file/ftruncate_stat_cache.phpt new file mode 100644 index 000000000000..3acc379d9fd9 --- /dev/null +++ b/ext/standard/tests/file/ftruncate_stat_cache.phpt @@ -0,0 +1,23 @@ +--TEST-- +ftruncate() clears the stat cache +--CREDITS-- +tolry (tobias.olry@gmail.com) +--FILE-- + +--EXPECT-- +int(8) +bool(true) +int(3) From 7d3e8f5d5022c9f51005fd2cf59c48028f230de7 Mon Sep 17 00:00:00 2001 From: arshidkv12 Date: Fri, 6 Nov 2026 13:41:46 +0530 Subject: [PATCH 2/2] ext/standard: Fix stale stat cache after ftruncate() --- ext/standard/tests/file/ftruncate_stat_cache.phpt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/standard/tests/file/ftruncate_stat_cache.phpt b/ext/standard/tests/file/ftruncate_stat_cache.phpt index 3acc379d9fd9..d3a0227c43e2 100644 --- a/ext/standard/tests/file/ftruncate_stat_cache.phpt +++ b/ext/standard/tests/file/ftruncate_stat_cache.phpt @@ -1,5 +1,5 @@ --TEST-- -ftruncate() clears the stat cache +GH-25232 ftruncate() clears the stat cache --CREDITS-- tolry (tobias.olry@gmail.com) --FILE--