Pliki na serwerach WWW powinny być zawsze bez spacji (nie „to jest obrazek.jpg”), bez umlautów ani znaków specjalnych (nie „football.jpg”), bez ukośników odwrotnych (nie „Arbeit \ Auto.jpg”) i małymi literami (nie „” test.JPG ”). Jednak ostatnio musiałem uzyskać dostęp i przetworzyć dużą liczbę gotowych plików o dowolnej nazwie dla projektu klienta.
Systemy Linux domyślnie zezwalają na dostęp do plików z umlautami i znakami specjalnymi, więc nie trzeba tutaj uwzględniać żadnych specjalnych funkcji. Zupełnie inaczej wygląda w systemach Windows: tutaj musisz użyć kilku sztuczek i wejść do interfejsu COM. Przede wszystkim należy dołączyć wymagane rozszerzenie do php.ini
[COM_DOT_NET] extension = php_com_dotnet.dll
jeden. Teraz używana jest bardzo pomocna klasa WinfsUtf8 , która znacznie upraszcza dostęp do obiektów COM i odwzorowuje prawie wszystkie funkcje PHP, które mają wpływ na pliki. Po integracji pliku z
require_once('WinfsUtf8.php');
mamy wszystkie możliwości dostępu do plików, na przykład wyników
file_exists('ä.jpg');
niepoprawnie fałszywe, podczas gdy
Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');
zwraca prawdę.