Maison >développement back-end >tutoriel php >Pourquoi mon inclusion PHP échoue-t-elle avec les chemins relatifs ?
Inclusivité et chemins relatifs en PHP
L'inclusion de fichiers dans un script PHP est une pratique courante, mais spécifier des chemins relatifs peut parfois conduire à des résultats inattendus erreurs. Explorons un cas où un fichier inclus à partir d'un sous-répertoire ne parvient pas à trouver un autre fichier inclus en raison d'une confusion de chemin relatif.
Dans l'exemple fourni, un script PHP situé dans /root/update/test.php tente d'inclure un autre fichier, /root/connect.php. Le code dans test.php inclut connect.php en utilisant un chemin relatif et spécifie un chemin d'inclusion de .:/root. Cependant, le fichier inclus, connect.php, contient une autre instruction d'inclusion pour un fichier appelé config.php utilisant un chemin relatif de ../config.php.
Le problème survient lorsque test.php s'exécute et tente de recherchez config.php en utilisant le chemin relatif spécifié dans connect.php. Cependant, le chemin d'inclusion spécifié dans test.php n'a qu'un seul niveau de profondeur et il ne peut pas remonter jusqu'au répertoire parent pour trouver config.php. Cela entraîne des avertissements indiquant que le fichier n'a pas pu être inclus.
Pour résoudre ce problème, pensez à utiliser un chemin absolu pour config.php dans connect.php ou à profiter des constantes magiques de PHP. Par exemple, l'utilisation de __DIR__ dans connect.php garantit que config.php est inclus au même niveau de répertoire que connect.php :
include(dirname(__DIR__).'/config.php');
Vous pouvez également définir un chemin racine fixe pour votre projet et l'utiliser. chemin dans connect.php et test.php :
// in connect.php define('ROOT_PATH', dirname(__DIR__) . '/'); // in test.php include(ROOT_PATH.'config.php');
Ces solutions permettent au chemin relatif de fonctionner comme prévu et résolvent les erreurs d'inclusion, permettant à vos scripts PHP d'inclure correctement les fichiers de différents répertoires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!