Каталог корневой папки PHP - include_once и echo

Я изо всех сил пытаюсь понять, как упростить свою жизнь с помощью php, включив файлы шаблонов php/html, используя, например, функцию include_once ('asset/header.php'). Я также хочу использовать это для ссылок css и js на каждой веб-странице. Пример:

<link href="css/font-awesome.min.css" rel="stylesheet">

Чего я хочу добиться с каждым из них, так это возможности добавить «ROOT» или $baseURL, например, перед ссылкой, поэтому:

<link href="<?php $baseURL ?>/css/font-awesome.min.css" rel="stylesheet">

а также

include_once ('$baseURL/asset/header.php')

Я ЗНАЮ, что вышесказанное далеко не так, у меня нет опыта в программировании на php, я просто знаю, что это может сделать мою жизнь намного проще, когда дело доходит до путей документа. Проблема, которую я хочу решить, проста: я не хочу <img src="../../../../img/IMAGE.jpg> и include_once ('../../../assets/header.php') ^^ Примеры здесь, конечно

Я просто хочу поместить один общий код php для печати корневого URL-адреса перед путем к изображению, css, html и т. д., который он будет включать или импортировать.

Я прочитал несколько учебных форумов об этом, но, к сожалению, ничего не могу понять с моим ограниченным опытом работы с php. Я хотел бы поместить корневые файлы php в config.php и, если возможно, ограничить прямой доступ?

Кроме того, в настоящее время я использую MAMP на Mac. Я слышал, что localhost может не работать с некоторыми решениями, поэтому любой совет тоже будет полезен!


person Luke Cottingham    schedule 12.06.2013    source источник


Ответы (4)


Попробуйте использовать суперглобальную переменную $_SERVER.

include_once $_SERVER['DOCUMENT_ROOT'].'/website/asset/header.php';

Команды realpath и dirname также могут быть полезны.

person user466764    schedule 12.06.2013
comment
Итак, мне не нужен файл config.php с этим решением. Как мне реализовать этот код в операторе include_once. Так же, как выше? Я попытался распечатать php, чтобы увидеть, что выводится, чтобы я мог видеть, что он будет делать со ссылкой, он просто говорит «Массив» со следующим: ‹?php echo $_SERVER; ?› - person Luke Cottingham; 12.06.2013
comment
Приведенное выше решение, скорее всего, будет работать на сервере. Однако использование MAMP предоставляет ссылку из корня моего документа. Итак, macHD › пользователи › мое имя › веб-сайт и т. д. - person Luke Cottingham; 12.06.2013
comment
Добавьте заявление в файл, который вы хотите включить. Вы можете проверить путь вручную, используя операторы эха, чтобы убедиться, что путь действителен. - person user466764; 13.06.2013

Сначала вам нужно объявить свою корневую переменную следующим образом:

$baseURL = "../.."; // or whatever it is

Затем вы можете использовать переменную в включении следующим образом:

include_once("{$baseURL}/asset/header.php"); // means include_once("../../asset/header.php");

Просто убедитесь, что когда вы указываете путь внутри include_once, вы используете ДВОЙНЫЕ кавычки, а не одинарные кавычки, иначе вы не сможете включать переменные, как указано выше.

Изменить: следует помнить одну вещь: $baseURL должен быть в рамках вашего включения. Например, если он глобальный и вы используете его внутри функции, убедитесь, что вы объявили его глобальным. Подробнее об областях видимости: http://php.net/manual/en/language.variables.scope.php

person Eric Wich    schedule 12.06.2013

Почему бы вам не попробовать функцию $_SERVER['SERVER_NAME']?

Пример:

Echo("http://".$_SERVER['SERVER_NAME']."/asset/header.php")
person as_bold_as_love    schedule 12.06.2013

Вы можете попробовать это:

require_once '../header.php';
person Biddut    schedule 05.05.2018