PHP: Πρόσβαση αρχείων με umlauts στα Windows

Τα αρχεία σε διακομιστές ιστού θα πρέπει πάντα να αποθηκεύονται χωρίς κενά (όχι "this is an image.jpg"), χωρίς διαλυτικά ή ειδικούς χαρακτήρες (όχι "football.jpg"), χωρίς ανάστροφες καθέτους (όχι "work\car.jpg") και με πεζά γράμματα (όχι "test.JPG"). Πρόσφατα, ωστόσο, για ένα έργο-πελάτη, έπρεπε να αποκτήσω πρόσβαση και να επεξεργαστώ έναν μεγάλο αριθμό προκαθορισμένων αρχείων με αυθαίρετα ονόματα αρχείων.


Τα συστήματα Linux επιτρέπουν την πρόσβαση σε αρχεία με umlauts και ειδικούς χαρακτήρες από προεπιλογή, έτσι ώστε να μην χρειάζεται να ληφθούν υπόψη ειδικές δυνατότητες εδώ. Φαίνεται εντελώς διαφορετικό στα συστήματα των 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');

επιστρέφει αλήθεια.

Πίσω