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