"Фикус" тут в том, что "глобальные переменные" надо выбирать не случайным образом, как это делаешь ты, а использовать только те, которые подходят для той или иной задачи.
Теоретически, HTTP_HOST
и SERVER_NAME
могут быть использованы для инклюда, но я очень сомневаюсь, что в корне веб-сайта на диске была создана папка с именем сервера. Скорее всего, ты просто путаешь, как все начинающие, файл на диске и НТТР ресурс на сервере. Вот хорошая статья, которая объясняет разницу.
Скорее всего тебе нужен DOCUMENT_ROOT
, но сначала ты должен определиться, какой путь тебе вообще нужен, а потом уже пытаться построить его с помощью переменных.
Если подробно разобрать эти примеры, то, допустим, что сайт у нас лежит в /home/www/example.com/htdocs
. Тогда первые два примера будут вести в
/home/www/example.com/htdocs/Soft/example.com/connection.php
в то время как должны вести в
/home/www/example.com/htdocs/connection.php
при этом в DOCUMENT_ROOT на правильно настроенном сервере должен лежать как раз нужный тебе путь /home/www/example.com/htdocs
- и вот его и надо подставлять в инклюд.
А третий пример некорректен с синтаксической точки зрения. Если писать внутри двойных кавычек, то можно вот так:
include_once("$_SERVER[DOCUMENT_ROOT]/connection.php");
include_once("{$_SERVER['DOCUMENT_ROOT']}/connection.php");
но я бы предпочел вариант через точку.