@PHP-GOD

Как подключить файл из корневой папки?

Суть такова.

Первый файл лежит
folder/folder1/a.php

второй
folder/folder2/b.php

Вот в a.php нужно подключить b.php.

Пытался вот так
include '../folder2/b.php';

и так
include '/folder2/b.php';

и даже так
include '../../folder2/b.php';

но все это выдает что файл не найден. Единственное решение проблемы оказалось dirname(dirname(__FILE__)), но каждый раз писать такой костыль при подключении инклуда уже надоело. Так можно узнать почему ../ не работает?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Хммм, а с каким URL-ом загружается a.php? Не через /index.php случаем? Тогда текущей директорией будет не /folder/folder1/, а корневая директория сайта $_SERVER['DOCUMENT_ROOT'].

А ещё проще - сделайте в /folder/folder1/a.php:
echo(getcwd()."<br>\n");
echo(realpath("../folder/folder2/b.php")."<br>\n");
var_dump(file_exists("../folder/folder2/b.php"));
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Malias
Делаешь просто.
define("ROOT", dirname(__DIR__));
define Это константа. ROOT Это путь с самой первой папки на сервере.
Дальше например
define("FOLDER1", ROOT . '/folder1');
Здесь в FOLDER1 хранится полный пусть к папке "folder1"
Дальше можешь подключать просто так.
include FOLDER1. '/b.php';
И всё.
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Ну давайте и я своё решение предложу:
include './../folder2/b.php';
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Для ответа на этот вопрос следует научиться отличать пути в файловой системе от путей на виртуальном веб-сайте.
И все сразу встанет на свои места. Для этого читаем здесь: phpfaq.ru/newbie/paths

По прочтении сразу станет ясно, что /folder2/b.php не будет работать по определению, а вот ../folder2/b.php писать не следует, но сработать по идее должно. И если не сработало, то твои представления о структуре каталогов не соответствуют реальности.

И здесь мы подходим к еще одной важной теме.
В сообщении об ошибке, которую тебе писал ПХП, в подробностях и деталях написано, где у тебя какой файл лежит, и где он должен лежать на самом деле.
поэтому надо или самому читать сообщение об ошибке (а не воспринимать его как беспомощное "ниработаит насяльника") или уж по крайней мере скопировать сообщение об ошибке сюда целиком.

Скорее всего, проблема в регистре букв. Который dirname учитывает, а накаляканое от руки folderfolder - нет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы