@khodos_dmitry

Как правильно прописать путь к файлу через require_once?

Я так пишу: require_once __DIR__ ."\\footer.php";
Полный путь: d:\OpenServer\domains\bk\views\footer.php
Как добавить файл d:\OpenServer\domains\bk\components\database.php
И как правильно это делать, ведь при переносе на сервер пути придется менять.
  • Вопрос задан
  • 13032 просмотра
Решения вопроса 3
Stalker_RED
@Stalker_RED
Backslash (обратная косая) \ в путях к файлам используется, в основном, в виндовс. На линуксе это не прокатит. К счастью винда почти везде понимает и обычный слеш, так что можно писать
d:/penServer/domains/bk/views/footer.php. Если хотите быть увереным в том, что путь будет правильным на любой платформе, используйте DIRECTORY_SEPARATOR.

Вы можете указывать пути или относительно текущего файла (__DIR__), как у вас в примере, или относительно корня сайта ($_SERVER['DOCUMENT_ROOT']), или относительно какой-то папки, путь к которой вынесен в конфиг.

А классы так подключать - вообще моветон. Почитайте про автолоадеры, например.

Примеры применения:
1. Допустим, сейчас исполняется файл D:/OpenServer/dummysite/index.php
И мы хотим подключить файл D:/OpenServer/dummysite/templates/footer.php
Тогда можно написать так: require __DIR__ . '/templates/footer.php'

1. Допустим, сейчас исполняется файл D:/OpenServer/dummysite/admin/index.php
И мы хотим подключить файл D:/OpenServer/dummysite/templates/footer.php
Тогда путь из первого примера будет ссылаться на D:/OpenServer/dummysite/admin/templates/footer.php
Чтобы это исправить, придется писать require __DIR__ . '/../templates/footer.php'
Или
require $_SERVER['DOCUMENT_ROOT'] . '/templates/footer.php'

Еще универсальнее:
require $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . 'footer.php'
Ответ написан
Никакие пути менять не надо, если структура приложения в корневой директории будет не измена.
define('__ROOT__', dirname(dirname(__FILE__)));
require_once(__ROOT__.'/components/database.php');
Ответ написан
Комментировать
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
Использовать всегда слэши:
require_once __DIR__ . '/footer.php';

Использовать абсолютные пути относительно проекта или его папки:
# Опираемся на текущую папку, относительно ее формируем путь
require_once __DIR__ . '/../components/database.php';

# Или используем подготовленную константу, которая при старте приложения устанавливается через define
require_once APP_DIR . '/components/database.php';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 12:46
150000 руб./за проект
01 мая 2024, в 12:23
100000 руб./за проект
01 мая 2024, в 12:20
50000 руб./за проект