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

Références officielles

Bouton retour en haut de la page