Support uploads with UTF-8 names on Windows
authorBrion Vibber <brion@pobox.com>
Tue, 3 Oct 2017 22:15:15 +0000 (15:15 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Tue, 3 Oct 2017 23:13:33 +0000 (23:13 +0000)
On PHP 7.1 and later, filesystem functions on Windows
use the Unicode system functions, which makes our file
handling work for non-ASCII file names.

Previously this was blacklisted for Windows on all PHP
versions. Versions before 7.1 will still reject Unicode
filenames with non-ASCII chars.

Bug: T3780
Change-Id: I94377faa5185f133be2dfb7b9b6aeacbd582834f

includes/libs/filebackend/FSFileBackend.php

index 30548ef..b257e27 100644 (file)
@@ -99,7 +99,13 @@ class FSFileBackend extends FileBackendStore {
        }
 
        public function getFeatures() {
-               return !$this->isWindows ? FileBackend::ATTR_UNICODE_PATHS : 0;
+               if ( $this->isWindows && version_compare( PHP_VERSION, '7.1', 'lt' ) ) {
+                       // PHP before 7.1 used 8-bit code page for filesystem paths on Windows;
+                       // See http://php.net/manual/en/migration71.windows-support.php
+                       return 0;
+               } else {
+                       return FileBackend::ATTR_UNICODE_PATHS;
+               }
        }
 
        protected function resolveContainerPath( $container, $relStoragePath ) {