From 4dac0d18b43186fb9868e0b7d2afffb26d5d143d Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Thu, 9 Jul 2026 16:20:10 +0900 Subject: [PATCH] Fix windows file delete permissions --- src/StaticPHP/Util/FileSystem.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/StaticPHP/Util/FileSystem.php b/src/StaticPHP/Util/FileSystem.php index 3bf12f99..61f2d726 100644 --- a/src/StaticPHP/Util/FileSystem.php +++ b/src/StaticPHP/Util/FileSystem.php @@ -322,7 +322,16 @@ class FileSystem } $sub_file = self::convertPath($dir . '/' . $v); if (is_link($sub_file) || is_file($sub_file)) { - if (!unlink($sub_file)) { + if (!@unlink($sub_file)) { + $last_error = error_get_last(); + logger()->debug("unlink failed for '{$sub_file}': " . ($last_error['message'] ?? 'unknown error') . ', attempting chmod + unlink'); + + // Go module cache files are often read-only; make writable and retry + if (@chmod($sub_file, 0666) && @unlink($sub_file)) { + continue; + } + + // Shell fallback: del /f /q forces deletion of read-only files on Windows $cmd = PHP_OS_FAMILY === 'Windows' ? 'del /f /q' : 'rm -f'; f_exec("{$cmd} " . escapeshellarg($sub_file), $out, $ret); if ($ret !== 0) {