#php #include #relative-path #include-path #absolute-path
#php #включить #относительный путь #включить-путь #абсолютный путь
Вопрос:
В настоящее время я работаю над очень простым многостраничным веб-сайтом на PHP с базовой структурой каталогов. Примерно так:
/
- index.php
- config.php
- services/
- index.php
- service-a.php
- service-b.php
- projects/
- index.php
- project-name/
- index.php
- testimonials.php
- common/
- head.php
- js/
- img/
- css/
К сожалению, моя локальная среда разработки и производственная среда структурно не совпадают из-за добавления дополнительной локальной папки.
Поэтому я создал config.php
, который я поместил в папку, которую я считаю корневой папкой, содержащую следующее:
define('ROOT_DIR', __DIR__);
define('ROOT_URL', ($_SERVER["SERVER_NAME"] == "localhost") ? "http://localhost/website/" : "https://website.com/");
Эти константы позволяют мне создавать абсолютные пути — в моей локальной и удаленной среде — к любому файлу, который я включаю, будь то другой файл PHP или изображение или таблица стилей. Это здорово, потому что я хочу максимально избегать любых относительных путей.
Se вот в чем проблема: мне нужно включить файл конфигурации на каждую страницу, чтобы константы работали. Для домашней страницы ( /index.php
) это не имеет большого значения. Я просто добавляю это в начало файла:
<?php include_once('config.php'); ?>
Однако для страницы в подкаталоге ( /services/index.php
) мне пришлось бы использовать относительный путь к файлу конфигурации, чего я бы хотел избежать:
<?php include_once('../config.php'); ?>
Если мы пойдем еще глубже, например /projects/project-name/index.php
, мне пришлось бы включить его следующим образом:
<?php include_once('../../config.php'); ?>
Это работает, но кажется неправильным. Как я должен объявить путь к включенному файлу, который определяет, как должны быть объявлены пути к включенным файлам?
После нескольких часов поиска я все еще не нашел ответа. Если у кого-то есть ответ или он может указать мне правильное направление, пожалуйста, дайте мне знать.
Комментарии:
1. Что ты имеешь в виду, это кажется неправильным!! Это правильно. Вот как вы включаете файл.
2. Но если так и должно быть, зачем вообще использовать абсолютные пути для любого файла? Например, я мог бы также ссылаться на таблицу стилей через ../../css/base.css просто отлично. Мне сказали максимально избегать относительных путей, чтобы обеспечить масштабируемость и перемещение по страницам. Это то, что я пытаюсь делать везде.