Maison > développement back-end > tutoriel php > Pourquoi mon inclusion PHP échoue-t-elle même avec un chemin d'inclusion correct ?

Pourquoi mon inclusion PHP échoue-t-elle même avec un chemin d'inclusion correct ?

Mary-Kate Olsen
Libérer: 2024-11-28 06:55:10
original
693 Les gens l'ont consulté

Why Does My PHP Include Fail Even With a Correct Include Path?

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');
Copier après la connexion

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";
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal