Версия Apache на сервере: 2.2.26
Версия PHP на сервере: 5.5.9
У меня есть файл под названием admin_config.php
в папке с файлом .htaccess
с параметром Deny from ALL
.
Из index.php
(в DOCUMENT_ROOT
) я пытаюсь включить этот файл со следующей строкой:
include '/core/config/admin_config.php'
Дома это прекрасно работает. На моем облачном сервере это не работает (нет сообщения об ошибке). Если я использую запрос вместо этого, я получаю внутреннюю ошибку 500.
Если я изменю линию на относительный путь, она работает:
include 'core/config/admin_config.php'
Почему я не могу установить абсолютный путь здесь? Это ошибка на сервере или ошибка с моей стороны
Пути, которые вы указываете для include
или require
– это пути к локальной файловой системе . Это не то, что вы видите в URL-адресах для доступа к вашему сайту. Абсолютный путь, начинающийся с /
происходит от корня файловой системы. В терминах Windows /foo
– C:\foo\
. Относительные пути, такие как foo/bar
относятся к PATH
конфигурации PATH
, которая зависит от того, как настроен ваш PATH
, который также включает в себя файл PHP.
Обычно не рекомендуется использовать абсолютные пути, так как они могут быть разными в разных системах (как вы переживаете). На вашей локальной машине сайт может жить в C:\core\...
, но на сервере он будет запущен в /var/www/mysite/core/...
PATH
также может быть громоздким для работы. Лучше всего использовать магические константы __FILE__
или __FILE__
для построения абсолютного пути относительно текущего файла (если это имеет смысл):
require __DIR__ . '/some/folder/file.php`;
Сюда входит файл some/folder/file.php
относительно файла, в котором он написан.