PHP: Windows altında çift noktalı dosya erişimi

Web sunucularındaki dosyalar her zaman boşluksuz ("bu bir resim.jpg" değil), çift nokta veya özel karakterler ("futbol.jpg" değil), ters eğik çizgi ("Arbeit \ Auto.jpg" değil) ve küçük harf ("" değil) olmalıdır. test.JPG "). Ancak son zamanlarda, bir müşteri projesi için herhangi bir dosya adına sahip çok sayıda dosyaya erişmem ve bunları işlemem gerekti.


Linux sistemleri, varsayılan olarak çift nokta işaretli ve özel karakterli dosyalara erişime izin verir, bu nedenle burada hiçbir özel özelliğin dikkate alınması gerekmez. Windows sistemlerinde tamamen farklı görünüyor: Burada bazı hileler kullanmanız ve COM arayüzüne dokunmanız gerekiyor. Her şeyden önce gerekli uzantıyı php.ini içine dahil edersiniz

[COM_DOT_NET]
extension = php_com_dotnet.dll

bir. Şimdi, COM nesnelerine erişimi büyük ölçüde kolaylaştıran ve dosyaları etkileyen hemen hemen tüm PHP işlevlerini eşleştiren çok yardımcı yardımcı sınıf WinfsUtf8 kullanılıyor. Dosyayı entegre ettikten sonra

require_once('WinfsUtf8.php');

biri dosya erişiminin tüm olanaklarına sahiptir, örneğin sonuçlar

file_exists('ä.jpg');

yanlış olarak yanlış

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

true döndürür.

Geri