Php include path document root

Как мне установить абсолютный путь включения в PHP?

В HTML я могу найти файл, начиная с корневой папки веб-сервера, начав путь к файлу с помощью «/». Как:

Я могу поместить этот путь в любой файл в любой подкаталог, и он укажет на правильное изображение. С PHP я пробовал нечто подобное:

. но это не работает. Я думаю, что эта страница говорит, что я могу установить include_path один раз и после этого, это будет принято. Но я не совсем понимаю синтаксис. Оба примера начинаются с периода, и он говорит:

Использование. в include-пути допускает относительное включение, поскольку это означает текущий каталог.

Относительные включения — это именно то, что я не хочу. Как я могу убедиться, что все мои включенные указывают на папку root/includes ? (Бонус: что, если я хочу разместить эту папку за пределами общего каталога?)

Разъяснение

Мои файлы разработки в настоящее время обслуживаются XAMPP/Apache. Это влияет на абсолютный путь? (Я еще не уверен, что будет сервер производства.)

Update

Я не знаю, что моя проблема была здесь. include_path вещь, на которую я ссылался выше, была именно тем, что я искал, и синтаксис на самом деле не запутан. Я просто попробовал, и он отлично работает. Одна вещь, которая возникает у меня, это то, что некоторые люди, возможно, подумали, что «/some/path» был «абсолютным путем», потому что они предположили, что ОС — это Linux. Этот сервер является Windows, поэтому абсолютный путь должен начинаться с имени диска. В любом случае проблема решена!:)

Читайте также:  Geocoder android studio java

Источник

Урок 8. Подключение файла в PHP. Include и require

Одна из самых занимательных и полезных возможностей php — подключение другого файла. Например, на сайте есть верхнее меню, нижнее и между ними само содержание страницы. И, например, на 10 страницах сайта используется нижнее меню. В какой-то момент в него потребовалось внести изменения. В html Вы бы вручную в каждом отдельном файле вносили изменения, но php позволяет существенно упростить работу с сайтом! Код нижнего меню может содержаться в отдельном файле, а на каждой из 10-ти страниц можно просто подключать этот отдельный файл! То есть все изменения нужно теперь вносить только в файл с меню, а на 10-ти других оно будет отображаться уже с изменениями.

Смысл подключения в php простым русским языком:

Файл 1.php
Верхнее меню

Файл 2.php
Нижнее меню

Файл example.php
Подкючаем Файл 1.php
Содержание страницы
Подкючаем Файл 2.php

В результате проработки файла example.php будет отображено
Верхнее меню
Содержание страницы
Нижнее меню
Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php

Путь к файлу

Подключение файла происходит согласно указанному к файлу пути. Есть два варианта пути: относительный и абсолютный. Относительный — это указание пути к подлючаемому файлу относительно файла с инструкцией подключения. Абсолютный — указание полного пути к подключаемому файла.

// пример относительного пути 
include "include/ваш_файл.php"; // файл лежит в папке include, которая находится в той же директории, что и файл с подключением

// пример абсолютного пути
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php"; // $_SERVER['DOCUMENT_ROOT'] - указывает корневую директорию сайта

include и include_once

include() — конструкция, предназначенная для включения файлов в код сценария PHP во время исполнения сценария PHP. При обработке кода инструкция заменяется на содержимое присоединяемого файла. Предлагаю сразу рассмотреть пример.

Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.

Код PHP (файл index.php)

  
echo "Обычный текст, содержащийся в основном файле";
include 'text.php'; // подключаем содержимое файла text.php

?>

Код PHP (файл text.php)

  
echo "Текст, содержащийся в подключаемом файле";

?>

В результате работы файла index.php отобразится:

Обычный текст, содержащийся в основном файле
Текст, содержащийся в подключаемом файле
Правда удобно? Теперь, поменяв содержимое в файле text.php будет совершенно другой результат работы index.php!

Теперь поговорим о другой конструкции — include_once. Она работает абсолютно также как и include, только создана позже и для тех случаев, когда нельзя повторно подключить файл. Например, Вы боитесь, что в результате ошибки можете подключить файл 2 и более раз, что скажется на некорректной работе страницы и получении соответствующего сообщения об ошибке.

include_once 'text.php'; // файл text.php будет подключен только один раз 

// повторное подключения ниже не будет учтено и отображено
// и из-за него не будет выведено сообщение об ошибке
include_once 'text.php'; // ничего не произойдёт

require и require_once

Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности — в случае того, если подключаемый файл не будет найден, выполнение скрипта будет остановлено (сценарий дальше не будет считываться), в то время как include и include_once просто выводят предупреждение и продолжают дальнейшее выполнение скрипта.

Постарайтесь в дальнейшем отказаться от использования include и require, применяйте их аналоги с суффиксом _once. В результате это упростит разбиение большой и сложной программы на относительно независимые модули.

Если не работает include или require

Чтобы понять причины того, почему не работает include, предлагаю проверить всё по шагам. Какими бы понятными и поверхностными не были указанные ниже пункты, проверьте всё с самого начала

1. Проверьте, работает ли Ваш сервер и php, работает ли вообще любой php код на сайте
2. Убедитесь, существует ли файл подключаемый файл
3. Проверьте, правильно ли введено название файла и расширение в подключении
4. Убедитесь, что подключаемый php-файл действительно находится по тому адресу, по которому указали
5. Попробуйте указать не относительный путь, а абсолютный (полный путь к файлу).

Пример Код PHP

include "http://www.example.com/include/ваш_файл.php"; 

// DOCUMENT_ROOT - обозначает корневую директорию ресурса
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php";

6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым

php_flag display_errors On

или в файле php, перед подключением, вставьте следующую строку

И та, и другая настройки будут принудительно отображать ошибки

Источник

PHP Include from Root

That is a relative file path, but it begins at the root public directory of the site. That way it always references the same location, no matter what directory that code snippet ends up in. If it didn’t begin with that “/”, it would be a relative file path still but it would the location would depend on what directory you were in at the time. Might work fine when you are at /index.php, but if that moves to /contact/ , the file path breaks because the images folder is in the root not in /contact/ . Common sense stuff. But this gets a little more complicated when dealing with a server side language like PHP. You can also do includes with PHP like this:

Because it doesn’t begin with a “/”, it suffers from the same problem our images example suffered from. If that include code moves to a different directory, the reference can be broken. But with PHP, simply using that beginning “/” will not work, which can be mighty confusing. The problem is that PHP can see a bit “deeper” into your servers file system than HTML can. For example, the public web directory of CSS-Tricks actually lives at “/var/www/vhosts/css-tricks.com/httpdocs” on my server. So when you do an include with a “/” at the beginning, it looks WAY down deeper than you are intending it to. You actually want it to look in that public web directory. In my case, “httpdocs”. In order to get this functionality back and have relative file paths that do not change, use this bit of PHP smartness:

I have found that in some environments DOCUMENT_ROOT does not seem to be properly set. I have devised a way that is independent of the server, and whether the hosting provider provides the ability to set an include or auto-prepend path as well. Each directory contains a ‘meta’ file called ‘__php__.php’ (or whatever one wants to call it). For any files in that directory, they simply include it as . The file itself simply includes the one in the parent directory all the way up to the site root. The file in the site root then can include other files, a simply way of auto-including files even if a service provider does not support it, and also define a variable such as ‘SITE_ROOTDIR’ , which can then be used later. If the document files are moved to another directory, they will still include the __php__.php file in that directory and still get the SITE_ROOTDIR constant from the top __php__.php file. I also do something similar for a simple navigation bar, where each directory has a __navbar__.php file, and each page simply includes it at the correct location and it can include parent navigation elements and define its own navigation elements. One advantage of this is that a part of the site can be sectioned in a sub-directory, and still get the root of that part, even if it isn’t the actual document root. A disadvantage is that it may slow down while doing all the includes on a site with heavy traffic.

Источник

Оцените статью