wp_normalize_path()
Définition : wp_normalize_path() homogénéise la représentation d’un chemin de fichier en remplaçant notamment les séparateurs Windows par des barres obliques. Elle facilite les comparaisons de chemins dans WordPress.
Comprendre et utiliser
À quoi sert ce terme ?
Elle réduit certains écarts entre environnements Windows et Linux pour les outils de développement ou de diagnostic. Un chemin comparable n’est toutefois pas nécessairement un chemin sûr ou existant.
Fonctionnement technique
Cette fonction normalise une chaîne de chemin ; elle ne résout pas les liens symboliques, ne vérifie pas la présence du fichier et n’applique pas à elle seule de confinement dans un répertoire autorisé.
Dans quels contextes l’utiliser ?
Utiliser pour l’inspection de chemins et les comparaisons portables. Pour vérifier qu’un fichier reste dans un répertoire donné, utiliser des contrôles de chemin réel et de politique d’accès appropriés.
Cas concret : ATOOLPHA
ATOOLPHA prépare des rapports techniques pouvant être générés sous Windows en local puis comparés à un déploiement Linux.
Exemple de code commenté
Extrait PHP destiné à un plugin ou à un template WordPress, dans le contexte indiqué ; pas au contenu HTML de l’article.
<?php
$source = 'C:\Projet\atoolpha\plugin.php';
$normalized = wp_normalize_path( $source );
error_log( 'Chemin normalisé : ' . $normalized );
Décryptage de l’exemple
Les antislashs deviennent des séparateurs standardisés. La chaîne n’implique aucun accès au disque ; elle sert uniquement à faciliter l’affichage et la comparaison documentaire.
Résultat attendu
Le journal contient une forme cohérente du chemin fourni, indépendamment du type de séparateur de la source.
Exercice pratique et vérification
Comparer un chemin Windows et son équivalent utilisant /. Vérifier que la normalisation ne supprime pas les segments dangereux imaginés par l’utilisateur.
Précautions et limites
Ne jamais déduire d’une normalisation qu’un chemin utilisateur est sûr. Éviter de concaténer un nom de fichier arbitraire à une racine sans validation appropriée.
À ne pas confondre
wp_normalize_path() agit sur une représentation ; realpath() cherche un chemin réel existant ; trailingslashit() contrôle un séparateur final.
Diagnostic avancé
Si un chemin parait correct mais n’ouvre aucun fichier, contrôler son existence réelle, les permissions et la casse du système de fichiers.
Choix d’architecture et déploiement
Normaliser des chaînes de chemins facilite les comparaisons entre Windows et Linux, mais ne contrôle ni les permissions ni les traversées de répertoires. Pour l’interface d’upload ou la lecture de fichiers, la politique de confinement est une responsabilité séparée et indispensable.
Contrôle avant intégration
Contrôler le traitement des entrées arbitraires, les chemins hors répertoire et les différences entre normalisation et confinement.
Notions associées
- ABSPATH
- plugin_dir_path()
- Must-Use Plugins
