Articles
This document is also available in English
L'utilisation des chemins absolus est fortement conseillés dans les applications qui manipulent des fichiers.
Cependant il n'est pas toujours facile de connaître l'arborescence du serveur qui héberge votre application et de plus celle-ci est ammennée à changer. De plus, si le chemin a transité par l'utilisateur, qu'il soit donné ou transmis, il est important de le valider pour qu'il ne se dédouble pas.
Une solution simple et rapide à mettre en place est l'utilisation de la fonction realpath() pour nettoyer le chemin absolu d'un fichier. De plus la fonction realpath() permet de résoudre les liens sympboliques.
Exemple n°1
<?php require_once realpath('../../config/application.conf.php'); ?>La fonction realpath() peut être couplé avec les fonctions dirname() (renvoi le nom du dossier d'un fichier) et basename() (renvoi le nom du fichier d'un chemin).
Exemple n°2
Mon fichier index.php doit inclure un fichier init.inc.php situé dans un dosser includes, lui même situé dans le même dossier que le fichier index.php.
L'arborescence est la suivante :
- application/
- includes/
- init.inc.php
- index.php
<?php require_once realpath('./includes/init.inc.php'); ?>Le problème de cette solution est que si l'inclusion est précédée d'un changement de dossier via la fonction chdir() par exemple, votre inclusion échouera.
Une solution pour résoudre ce problème est d'utiliser la variable __FILE__ qui retourne le nom du fichier dans lequel elle est appellée et la fonction dirname() qui va nous retourner le nom du dossier de ce fichier.
<?php /** * Changer le répertoire courant */ chdir('../../'); /** * Le <a href="http://www.php.net/chdir">chdir()</a> au dessus n'aura pas de conséquence sur le chemin d'inclusion du fichier */ require_once realpath(dirname(__FILE__) . './includes/init.inc.php'); ?>Exemple n°3
Enfin la fonction pathinfo() permet d'obtenir le chemin du fichier, le nom du fichier, ainsi que son extension.
<?php print_r(__FILE__); /** * Array * ( * [dirname] => /home/mon_compte/public_html * [basename] => index.php * [extension] => php * [filename] => index */ ?>N'utilisez pas la fonction pathinfo() pour déterminer le type du fichier. Utilisez plutôt l'extension Fileinfo.
A mémoriser
- realpath() est disponible depuis PHP 4. realpath() renvoie FALSE si une erreur survient.
| < Précédent | Suivant > |
|---|
Commentaires
Vous pouvez ajouter votre commentaire! |
Vous devez vous connecter pour commenter


