Мне нравится ссылаться на изображения, файлы CSS и php, используя их абсолютный путь, который начинается с root, с адресом, начинающимся с "/".
Мне нужно включить php-файлы, которые находятся в "/ bin / res / include". Я понял, что не могу использовать абсолютные пути в php, как в html. После некоторых исследований я обнаружил, что лучший метод, который соответствует моим потребностям, это
define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/");
и затем включить файл
include_once(PHP_ROOT."filename.php");
Я не хочу вставлять первое определение на каждую html-страницу. Могу ли я сделать глобальное определение? Могу ли я определить эту константу один раз в одном месте и сделать ее доступной для всех html-страниц? Если да, то как и где находится global place?
- Я не могу использовать
dirname(__FILE__);
, потому что он дает только полный путь к папке, в которой я сейчас нахожусь, которая может быть не корневой.
- Я не могу использовать
$_SERVER['DOCUMENT_NAME']
, потому что я пользуюсь услугой общего хостинга.
[ОБНОВЛЕНИЕ: решение] Спасибо всем, особенно RiaD за идею, вот что я сделал:
Отредактировал мой файл .htaccess в корне моего сайта и добавил следующую строку,
#Loads an init php located at <fullpath>/<path-to-folder-with-php-files-to-include>/init.php
php_value auto_prepend_file /home/a7503679/public_html/bin/res/include/init.php
Теперь все мои html-файлы будут включать этот файл init.php, поэтому вы (как и я) должны поместить туда весь общий php-код, который вам понадобится на каждой html-странице, который в моем случае был:
<?php
define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/"); #this solves the problem
include 'lang.php'; #translations file
?>
Раньше мне нужно было включать это lang.php
на каждой странице, и теперь это делается автоматически. Если мне нужно включить любой другой файл php, используя его абсолютный путь, я просто наберу include PHP_ROOT.'filename.php';