diff --git a/CHANGELOG.md b/CHANGELOG.md index 154138e30..79bf5e812 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ 1. [](#bugfix) * Grav 1.7: Fixed error on page initialization [#2753](https://github.com/getgrav/grav/issues/2753) * Fixed checking ACL for another user (who is not currently logged in) in a Flex Object or Directory + * Fixed bug in Windows where `Filesystem::dirname()` returns backslashes # v1.7.0-rc.2 ## 12/04/2019 diff --git a/system/src/Grav/Framework/Filesystem/Filesystem.php b/system/src/Grav/Framework/Filesystem/Filesystem.php index babbb1d53..20363b30b 100644 --- a/system/src/Grav/Framework/Filesystem/Filesystem.php +++ b/system/src/Grav/Framework/Filesystem/Filesystem.php @@ -176,6 +176,11 @@ class Filesystem implements FilesystemInterface return [$scheme, '']; } + // In Windows dirname() may return backslashes, fix that. + if (DIRECTORY_SEPARATOR !== '/') { + $path = str_replace('\\', '/', $path); + } + return [$scheme, $path]; } @@ -199,6 +204,11 @@ class Filesystem implements FilesystemInterface $dirname = isset($info['dirname']) && $info['dirname'] !== '.' ? $info['dirname'] : null; if (null !== $dirname) { + // In Windows dirname may be using backslashes, fix that. + if (DIRECTORY_SEPARATOR !== '/') { + $dirname = str_replace('\\', '/', $dirname); + } + $info['dirname'] = $scheme . '://' . $dirname; } else { $info = ['dirname' => $scheme . '://'] + $info;