par
Ryle » 13 août 2008, 13:43
En fait, l'inclusion a pour effet d'exécuter le fichier comme s'il faisant partie du source du fichier parent... du coup les chemins relatifs y sont effectivement associés.
Sans devoir parser le fichier, ce que tu peux faire c'est simplement définir une variable dans le script parent contenant le chemin vers la racine à partir de laquelle ton fichier inclu peut s'exécuter, et ajouter ensuite cette variable dans tes chemins :
dossier/index.php
...
$racine = '../';
include('../include/config.php');
...
include/config.php
if (!isSet($racine)) // si la variable n'est pas sépcifiée on la déclare vide (pour compatibilité)
$racine = '';
...
// au lieu de $chemin = "../dossier/fichier"; tu aurais alors :
$chemin = $racine . "../dossier/fichier";
Ainsi si $racine n'est pas définie, rien ne change, et si elle est spécifiée, alors php va se recaler par rapport à elle pour déterminer le chemin relatif

En fait, l'inclusion a pour effet d'exécuter le fichier comme s'il faisant partie du source du fichier parent... du coup les chemins relatifs y sont effectivement associés.
Sans devoir parser le fichier, ce que tu peux faire c'est simplement définir une variable dans le script parent contenant le chemin vers la racine à partir de laquelle ton fichier inclu peut s'exécuter, et ajouter ensuite cette variable dans tes chemins :
dossier/index.php
[php]...
$racine = '../';
include('../include/config.php');
...[/php]
include/config.php
[php]if (!isSet($racine)) // si la variable n'est pas sépcifiée on la déclare vide (pour compatibilité)
$racine = '';
...
// au lieu de $chemin = "../dossier/fichier"; tu aurais alors :
$chemin = $racine . "../dossier/fichier";[/php]
Ainsi si $racine n'est pas définie, rien ne change, et si elle est spécifiée, alors php va se recaler par rapport à elle pour déterminer le chemin relatif :)