j'ai la structure de fichiers suivante:
rootDIR dir1 subdir1 file0.php file1.php dir2 file2.php file3.php file4.php
file1.php
requiert file3 et file4 de dir2 comme ceci:
require('../../dir2/file3.php')
file2.php
a besoin file1.php
comme ça :
require('../dir1/subdir1/file1.php')
MAIS alors exiger dans file1 ne parvient pas à ouvrir file3 et file4 (peut-être en raison de la relativité du chemin)
Cependant, quelle est la raison et que puis-je faire pour file2.php
alors file1.php
nécessite correctement file3 et file4
Essayez d'ajouter dirname(__FILE__)
avant le chemin, comme:
require(dirname(__FILE__).'/../../dir2/file3.php');
Il doit inclure le fichier à partir du répertoire racine
Pour les chemins relatifs, vous pouvez utiliser __DIR__
Directement plutôt que dirname(__FILE__)
(tant que vous êtes en utilisant PHP 5.3.0 et supérieur =):
require(__DIR__.'/../../dir2/file3.php');
N'oubliez pas d'ajouter la barre oblique supplémentaire au début du chemin entre guillemets.
Voir:
Un bon conseil ici est de ne jamais utiliser des chemins relatifs "../../" dans vos applications Web. C'est difficile à lire et terrible pour l'entretien.
Comme vous pouvez en témoigner. Cela rend extrêmement difficile de savoir ce que vous pointez.
Si vous devez modifier le niveau de dossier de votre application, ou des parties de celle-ci. Il est complètement sujet aux erreurs et cassera probablement quelque chose d'horrible à déboguer.
Au lieu de cela, define
quelques constantes dans votre fichier bootstrap pour votre ou vos chemins principaux), puis utilisez:
require(MY_DIR.'/dir2/file3.php');
Déplacer votre application à partir de là est aussi simple que de remplacer vos constantes MY_DIR dans un seul fichier.
Vous pouvez toujours utiliser le $_SERVER['DOCUMENT_ROOT']
comme point de départ valide également, plutôt que de recourir à un chemin relatif. Juste une autre option.
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');