PHP: Filåtkomst med paraplyer under Windows

Filer på webbservrar bör alltid lagras utan mellanslag (inte "detta är en bild.jpg"), utan omljud eller specialtecken (inte "fotboll.jpg"), utan bakåtsnedstreck (inte "arbete\bil.jpg") och med gemener (inte "test.JPG"). Nyligen var jag dock tvungen att komma åt och bearbeta ett stort antal fördefinierade filer med godtyckliga filnamn för ett klientprojekt.


Linux-system tillåter åtkomst till filer med paraplyer och specialtecken som standard, så att inga speciella funktioner behöver beaktas här. Det ser helt annorlunda ut på Windows-system: Här måste du använda några knep och knacka på COM-gränssnittet. Först och främst inkluderar du den nödvändiga förlängningen i php.ini

[COM_DOT_NET]
extension = php_com_dotnet.dll

ett. Nu används den mycket hjälpsamma hjälpklassen WinfsUtf8 , vilket förenklar åtkomst till COM-objekten kraftigt och kartlägger nästan alla PHP-funktioner som påverkar filer. Efter att ha integrerat filen med

require_once('WinfsUtf8.php');

man har alla möjligheter till filåtkomst, till exempel resultat

file_exists('ä.jpg');

felaktigt falsk, medan

Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');

returnerar sant.

Tillbaka