Файли на веб-серверах завжди слід зберігати без пробілів (не "this is an image.jpg"), без умлаутів або спеціальних символів (не "football.jpg"), без зворотних слешів (не "work\car.jpg") та в нижньому регістрі (не "test.JPG"). Однак нещодавно для клієнтського проекту мені довелося отримати доступ та обробити велику кількість попередньо визначених файлів з довільними іменами файлів.
Системи Linux за замовчуванням дозволяють отримувати доступ до файлів з озвучуванням та спеціальними символами, так що тут не слід розглядати особливі можливості. Зовсім інакше це виглядає в системах Windows: тут вам потрібно скористатися деякими хитрощами і торкнутися COM-інтерфейсу. Перш за все, ви включаєте необхідне розширення в php.ini
[COM_DOT_NET] extension = php_com_dotnet.dll
один. Зараз використовується дуже корисний допоміжний клас WinfsUtf8 , який значно спрощує доступ до COM-об'єктів і відображає майже всі функції PHP, що впливають на файли. Після інтеграції файлу з
require_once('WinfsUtf8.php');
один має всі можливості доступу до файлів, наприклад результати
file_exists('ä.jpg');
неправильно помилково, тоді як
Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');
повертає true.