Описание проблемы
Во -первых, давайте посмотрим на структуру каталогов нашего примера и содержимое этих трех файлов.
а.
<? phpinclude './c/d.php'
B.Php
<? phpdefine ('__ b', «это тест»);C/D.php
<? phpinclude '../b.php'; Var_dump(__b);
Файл D.PHP в каталоге C относится к файлу B.PHP под его верхним каталогом. У него не будет проблем при запуске C/D.PHP отдельно.
Однако, если A.PHP ссылки C/D.PHP в том же каталоге, что и B, возникнет проблема.
Он сообщает об ошибке, в которой говорится, что файла не существует
думать
Общее значение заключается в том, что после того, как A.Php вводит C/D.PHP в A.PHP, путь include '../b.php' относительно A.PHP, и относительный путь для A.PHP не существует, поэтому возникает эта проблема.
Если на файл можно ссылаться в нескольких местах, довольно легко иметь проблемы, а затем мы можем легко решить эту проблему, используя абсолютные пути.
Используйте абсолютные пути для решения проблемы
Если мы изменим файл на следующее
а.
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
B.Php
<? phpdefine ('__ b', «это тест»);C/D.php
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
Это изменяется, чтобы ссылаться на абсолютный путь файла. __DIR__ - это предопределенная магическая константа, которая существовала в PHP5.3, указывая на каталог, в котором находится файл. Затем мы используем это, чтобы написать абсолютный путь, который можно выполнять обычно при запуске A.Php и C/D.PHP. Если dirname(__FILE__) используется вместо __DIR___ до php5.3
Суммировать
Вышеупомянутое дело о проблеме относительных путей в PHP и использовании абсолютных путей. Я надеюсь, что это будет полезно для всех, кто использует PHP, и снова не входит в яму относительных путей в PHP.