fix: only treat the last path segment as a filename in path()

isFilePath() checked the entire path for a dot to decide whether path() was given
a file or a directory. Because the path includes the location and name, a dot in
a parent segment (for example a location like /tmp/my.app) caused a directory
argument to be misclassified as a file, so the requested subdirectory was not
created. Inspect only the last path segment instead.
This commit is contained in:
dualfroz committed 2026-09-06 00:58:52 +02:00
1 parent 464f951c9b
commit f1a81ad34a
2 files changed
+25 -1

No files matched your search

+6 -1
View File
@@ -163,7 +163,12 @@ class TemporaryDirectory
protected function isFilePath(string $path): bool
{
return str_contains($path, '.');
// Only the last segment can be a filename; a dot in a parent segment would
// misclassify a directory.
$lastSeparator = strrpos($path, DIRECTORY_SEPARATOR);
$lastSegment = $lastSeparator === false ? $path : substr($path, $lastSeparator + 1);
return str_contains($lastSegment, '.');
}
protected function deleteDirectory(string $path): bool