Description du problème
Tout d'abord, jetons un coup d'œil à la structure du répertoire de notre exemple et du contenu de ces trois fichiers.
A.Php
<? phpinclude './c/d.php'
b.php
<? phpdefine ('__ b', 'Ceci est un test');c / d.php
<? phPinclude '../b.php';var_dump(__b);
Le fichier D.PHP sous le répertoire C fait référence au fichier B.PHP sous son répertoire supérieur. Il n'aura aucun problème lors de l'exécution de C / D.PHP séparément.
Cependant, si A.PHP fait référence à C / D.PHP dans le même répertoire que B, il y aura un problème.
Il signale une erreur disant que le fichier n'existe pas
pense
La signification générale est qu'après A.PHP a introduit C / D.Php dans A.Php, le chemin include '../b.php' est par rapport à A.PHP, et le chemin relatif pour A.PHP n'existe pas, ce problème se pose donc.
Si un fichier peut être référencé à plusieurs endroits, il est assez facile d'avoir des problèmes, puis nous pouvons facilement résoudre ce problème à l'aide de chemins absolus.
Utilisez des chemins absolus pour résoudre le problème
Si nous modifions le fichier en ce qui suit
A.Php
<? Phpinclude __dir __. '/ .. / b.php'; var_dump (__ b);
b.php
<? phpdefine ('__ b', 'Ceci est un test');c / d.php
<? Phpinclude __dir __. '/ .. / b.php'; var_dump (__ b);
Ceci est modifié pour se référer au chemin absolu du fichier. __DIR__ est une constante magique prédéfinie qui a existé dans PHP5.3, indiquant le répertoire où se trouve le fichier. Ensuite, nous utilisons ceci pour écrire le chemin absolu, qui peut être exécuté normalement lors de l'exécution de A.Php et C / D.Php. Si dirname(__FILE__) est utilisé à la place de __DIR___ avant php5.3
Résumer
Ce qui précède concerne le problème des chemins relatifs en PHP et l'utilisation de chemins absolus. J'espère que cela sera utile à tous ceux qui utilisent PHP et éviteraient de saisir à nouveau le fosse des chemins relatifs en PHP.