Путь относительно корня сервера для PHP-конструкции Include / Require
В управляющей конструкции include / require
допускается использовать путь относительно корня сервера, однако многие начинающие программисты, полагая, что он идентичен пути относительно корня сайта, используют последний. В итоге парсер выдаёт два предупреждения:
Warning: include(указанный+путь) [function.include]: failed to open stream: No such file or directory in относительный+путь on line номер+строки
Warning: include(): Failed opening 'указанный+путь' for inclusion (include_path='путь+по+умолчанию') in относительный+путь on line номер+строки
- указанный+путь
- путь к подключаемому файлу, который указал программист.
- относительный+путь
- путь к файлу, в котором используется конструкция
include / require
, относительно корня сервера. - номер+строки
- номер строки с ошибкой в вышеупомянутом файле.
- путь+по+умолчанию
- один или несколько путей к папкам, разделённых двоеточием (:) в Unix и точкой с запятой (;) в Windows, где парсер будет искать подключаемые файлы, если в конструкции
include / require
указаны только имя и расширение, а не точное расположение, файла или указанного пути не существует.
Дело в том, что на сервере сайты обычно не размещаются в его корне, а конструкция include / require
использует указанный в её параметрах путь именно относительно корня сервера, а не сайта.
Чтобы использовать путь относительно корня сервера, нужно узнать путь к папке, в которой располагается сайт. Это можно сделать с помощью следующего скрипта:
<?php
echo dirname( __FILE__ );
?>
Если запустить данный скрипт в корне сайта, то он выведет путь к папке, в которой хранится сайт на сервере, то есть путь к сайту относительно корня сервера. На всех серверах пути к этим папкам похожи. Например, на серверах Хостингера их общий вид следующий: /home/идентификатор+сайта/public_html/
Зная путь к папке, в которой располагается сайт, относительно корня сервера, можно использовать одинаковые «иклюды» для файлов, лежащих в разных папках сайта. Однако этого делать не рекомендуется, так как при смене хостера на новом сервере этот путь может отличаться и придётся исправлять код.