Проблемы с Php Include ()

У меня есть три файла, которые выглядят следующим образом

  1. users.php
  2. auth.php
  3. main.php

где users.php находится в корне каталога / . auth и main.php находится в примере тестовой папки /test/auth.php & /test/main.php .

Users.php содержащий следующий php-код.

 <?php include('test/main.php'); ?> в <?php include('test/main.php'); ?> 

auth.php содержащий следующий PHP-код.

 <?php include('../test/main.php'); ?> 

Код main.php

 <?php include('test/db.php'); ?> в <?php include('test/db.php'); ?> 

Где я выполняю users.php он работает отлично, но когда я выполняю users.php который находится в корневой папке, я /test/auth.php отличный результат, но если я выполняю /test/auth.php

 Warning: include(test/db.php) [function.include]: failed to open stream: No such file or directory in /path/db.php on line 2 

есть ли какое-либо решение для доступа к auth.php с ошибкой с надлежащей функцией.

Включает всегда относительную рабочую директорию (фактически, относительно PATH , частью которой является рабочий каталог). Рабочий каталог определяется сценарием, который выполняется. Скажем, у вас есть эта структура:

 webroot/ foo.php folder/ bar.php 

Когда вы запускаете foo.php либо через $ php foo.php в командной строке, либо, посетив localhost/foo.php в своем браузере, рабочий каталогwebroot/ . Если вы запустите folder/bar.php , рабочий каталог – webroot/folder .

Чтобы убедиться, что вы включаете файлы по отношению к файлу, включенному в include , используйте что-то вроде:

 include __DIR__ . '/folder/bar.php`; 

Это или измените свой PATH, чтобы добавить к нему свой корневой каталог проекта и всегда относить его к корню проекта. Я предпочитаю, чтобы либо относительный файл включал, как показано выше, либо автоматически загружался .

Я немного стараюсь понять ваш вопрос. Я думаю, что ваша файловая структура выглядит так:

  • users.php
  • test (папка)
    • main.php
    • auth.php
    • db.php

Если это так, чтобы включить db.php из main.php , все, что вам нужно сделать, это include('db.php'); , Текущая папка автоматически находится в пути, используемом для определения того, какие файлы могут быть включены.

В auth.php вы include('../test/main.php'); , Это не нужно, поскольку вы уже находитесь в test папке. Вы .. чтобы выбраться из него, тогда вы снова вернетесь в него! Вы можете упростить это с помощью include('main.php'); ,