diff --git a/NEWS b/NEWS index 05e6887ddc2..97224d6a187 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,10 @@ PHP NEWS . Fixed bug GH-18139 (Memory leak when overriding some settings via readline_info()). (ndossche) +- Standard: + . Fixed bug #74357 (lchown fails to change ownership of symlink with ZTS) + (Jakub Zelenka) + 15 Jan 2026, PHP 8.5.2 - Core: diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index 366e13ce9b6..e4d88338bc9 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -1417,7 +1417,7 @@ CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int li int ret; CWD_STATE_COPY(&new_state, &CWDG(cwd)); - if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) { + if (virtual_file_ex(&new_state, filename, NULL, link ? CWD_EXPAND : CWD_REALPATH)) { CWD_STATE_FREE_ERR(&new_state); return -1; } diff --git a/ext/standard/tests/file/bug74357.phpt b/ext/standard/tests/file/bug74357.phpt new file mode 100644 index 00000000000..ebef650bb64 --- /dev/null +++ b/ext/standard/tests/file/bug74357.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #74357 (lchown fails to change ownership of symlink with ZTS) +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECT-- +int(1000) diff --git a/ext/standard/tests/skipif_no_root.inc b/ext/standard/tests/skipif_no_root.inc new file mode 100644 index 00000000000..ef60c14745b --- /dev/null +++ b/ext/standard/tests/skipif_no_root.inc @@ -0,0 +1,16 @@ +