@ericnolimit

Как подключить файл в PHP?

Допустим у меня есть файл /file/file.php и мне нужно в нем подключить файл /config.php, так как файл находится на директорию ниже то я не могу подключить его через require 'config.php'; так как он начинает искать этот файл относительно папки /file/. Можно ли это как то сделать без указания абсолютного пути?

И ещё вопрос, почему через openserver нормально подключается файл если его записать как require 'file\file.php'; а уже когда на хостинг заливаю то выдаёт ошибку, типа надо было писать 'file/file.php';.

Заранее спасибо за ответы
  • Вопрос задан
  • 2394 просмотра
Пригласить эксперта
Ответы на вопрос 3
stanislav-belichenko
@stanislav-belichenko
Backend PHP Developer
Есть несколько моментов, которые нужно учесть при подключении файлов.

  • В целом есть два варианта их подключения, через require и через include. Оба сделают одно и то же, но второй вариант выдаст warning при отсутствии файла, а первый - fatal error.
  • Оба варианта имеют свои подварианты, а именно require_once и include_once - в случае использования такой записи файлы включаются в код единожды, и если вы где-то два раза попытаетесь подключить их, подключение произойдет только один раз.
  • Путь, который по умолчанию используется в обоих вариантах, зависит от настроек среды, в каких-то случаях он может быть не задан, и тогда путь считается от файла, в котором вы подключаете другие файлы, а в каком-то будет установлена переменная конфигурации include_path и вся ваша логика нарушится. В связи с этим настоятельно рекомендуют подключать файлы с помощью такой конструкции: include __DIR__ . '/dir/file';, где __DIR__ - "магическая" переменная, содержащая абсолютный путь до папки вашего срипта.
  • Слеши в пути отличаются в разных системах, получить нужный вам можно через предопределенную константу DIRECTORY_SEPARATOR.
  • Если вы подключаете конкретно конфиг вашей системы, вы можете сделать вот так в скрипте: $config = include __DIR__ . '/config.php';, а в конфиге сделать что-то вроде return = ['pass'=>'...', login=>'...'], после чего в основном скрипте получать переменные через что-то вроде config['pass'] - в целом, работать все будет и без этого, но зато так повысится читаемость вашего кода.
Ответ написан
Комментировать
andreylc
@andreylc
html, css, js, java
чтобы вернуться на один каталог назад, пишешь
require "../config.php";
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) чтобы точно знать что и как подключить, используй полный путь
$_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'somefile.php'

2) используй глобальную константу DIRECTORY_SEPARATOR, т.к. в разных ос разные разделители папок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы