У меня есть три файла, которые выглядят следующим образом
где 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');
,