Когда вы используете include или require, включаемый вами файл будет действовать так, как если бы он был частью сценария, который его включал.В этом случае файл a.php
может находиться в том же каталоге, что и b.php
, но когда код выполняется, он работает в контексте index.php
.Если бы вы использовали __FILE__
вместо __DIR__
, вы бы увидели, что a.php
возвращает то же значение, что и index.php
, когда он работает как включенный файл в index.php
.
, поскольку относительнаяпуть меняется в зависимости от того, где используются файлы, всегда лучше использовать абсолютный путь относительно корня сервера.Если машина настроена нормально, это будет начинаться с $_SERVER["DOCUMENT_ROOT"]
, затем добавьте путь к приложению и путь включений.На некоторых серверах общего хостинга вам, возможно, придется где-то жестко закодировать корень (или добавить его в файл .htaccess).