Confusion du chemin relatif d'inclusion PHP
Lorsqu'ils tentent d'inclure un fichier PHP à partir d'un chemin relatif, les développeurs peuvent rencontrer des erreurs inattendues malgré la définition de l'inclusion chemin correctement. Cet article examine les causes potentielles de telles erreurs, en proposant une solution à l'aide des constantes DIR et dirname.
Le problème :
Le problème d'un utilisateur la structure du code comprend deux fichiers, /root/connect.php et /root/update/test.php. connect.php tente d'inclure "../config.php", en supposant que config.php se trouve dans /root. Cependant, test.php inclut connect.php et définit le chemin d'inclusion sur ".:/root", ce qui devrait théoriquement permettre l'inclusion de ../config.php depuis /root.
Le Erreur :
Malgré le chemin d'inclusion correct défini, le code ne parvient pas à trouver config.php et génère des avertissements PHP indiquant que le fichier n'existe pas. C'est déroutant car le chemin relatif vers config.php (/root/config.php) se trouve dans le chemin d'inclusion établi.
La solution :
La clé pour résoudre ce problème réside dans la compréhension du comportement des chemins relatifs en PHP. Bien que include prenne en charge les chemins relatifs, le point de départ est toujours le répertoire actuel du fichier qui exécute l'instruction include. Dans ce cas, connect.php est exécuté dans /root/connect.php, donc lorsqu'il tente d'inclure "../config.php", il regarde dans le répertoire /root/connect.php/, qui ne contient pas de configuration. .php.
Pour surmonter cette limitation, la constante DIR peut être utilisée pour référencer le répertoire du fichier courant. La concaténation du nom du fichier à DIR fournit le chemin absolu vers le fichier souhaité.
Code avec solution :
connect.php :
include(dirname(__DIR__).'/config.php');
Ce code utilisera le chemin absolu dirname(__DIR__).'/config.php' pour inclure config.php, en garantissant qu'il soit trouvé quel que soit le répertoire actuel.
Test.php :
set_include_path(".:/root"); include "connect.php";
Avec cette modification, test.php inclura avec succès connect.php, qui à son tour inclura config.php à partir de son emplacement correct. emplacement.
Conclusion :
Comprendre le comportement des chemins relatifs et utiliser les constantes DIR et dirname permet aux développeurs d'inclure avec précision les fichiers des chemins relatifs. , même lorsque vous travaillez avec des structures de répertoires complexes.
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!