get_host_info
Функция mysqli_get_host_info() в PHP возвращает информацию о хосте для подключения к MySQL: тип транспорта и имя хоста.
Функция mysqli_get_host_info() возвращает одну строку, описывающую способ подключения вашего PHP-скрипта к серверу MySQL — имя хоста вместе с типом транспорта (TCP/IP, Unix-сокет или именованный канал). На этой странице описаны синтаксис, возможные возвращаемые значения, процедурный и объектно-ориентированный стили использования, а также практические случаи применения функции.
Что возвращает get_host_info()
mysqli_get_host_info() — встроенная функция PHP, которая при наличии открытого подключения MySQLi возвращает удобочитаемую строку с описанием типа подключения и хоста. Типичные возвращаемые значения:
localhost via TCP/IP— подключение к локальному серверу через сетевой сокет.Localhost via UNIX socket— подключение через локальный Unix-доменный сокет (по умолчанию на Linux/macOS, когда хост —localhost).127.0.0.1 via TCP/IP— подключение к явному IP-адресу по TCP/IP.db.example.com via TCP/IP— подключение к удалённому хосту.
Функция доступна только для чтения и никогда не изменяет подключение — она просто сообщает о транспорте, согласованном драйвером. Это делает её удобной для отладки (подтверждение, что вы действительно используете ожидаемый сокет/хост) и логирования диагностической информации о подключении.
Синтаксис
mysqli_get_host_info(mysqli $mysqli): string| Параметр | Описание |
|---|---|
$mysqli | Допустимый объект подключения, возвращённый функцией mysqli_connect() или mysqli_real_connect(). |
Возвращаемое значение: строка, описывающая тип подключения к серверу. Функция никогда не возвращает false; если ссылка недействительна, PHP вместо этого вызывает предупреждение.
Процедурный стиль
Передайте объект подключения, возвращённый функцией mysqli_connect():
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Host information: " . mysqli_get_host_info($mysqli);
mysqli_close($mysqli);
?>Сначала мы вызываем mysqli_connect() для открытия подключения, затем проверяем результат, чтобы в случае ошибки корректно завершить работу с помощью mysqli_connect_error() вместо генерации предупреждений. Передача ссылки в mysqli_get_host_info() возвращает описание транспорта, которое мы выводим. На Linux-хосте с localhost вывод выглядит так:
Host information: Localhost via UNIX socketОбъектно-ориентированный стиль
Процедурная функция имеет эквивалентное свойство объекта mysqli — get_host_info:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Host information: " . $mysqli->get_host_info;
$mysqli->close();
?>Оба стиля возвращают одну и ту же строку. Обратите внимание, что в объектно-ориентированном варианте get_host_info обращается как к свойству, а не вызывается как метод.
Когда это использовать?
- Проверка транспорта. Принудительное использование TCP/IP (например, указание
127.0.0.1вместоlocalhost) иногда требуется для инструментов или TLS.get_host_info()подтверждает, какой именно транспорт был получен. - Логирование подключений. Запись строки хоста вместе со статистикой подключения даёт быстрый наглядный отчёт о том, к чему был подключён запрос.
- Устранение проблемы «работает локально, но не в продакшене». Неожиданное различие
via UNIX socketиvia TCP/IPнередко объясняет различия в правах доступа или настройках брандмауэра.
Частые ошибки
- Не путайте её с суперглобальной переменной
$_SERVER.$_SERVER['SERVER_NAME']описывает веб-сервер, обрабатывающий HTTP-запрос;mysqli_get_host_info()описывает подключение к базе данных — это два независимых понятия. - Строка предназначена для людей, а не для разбора. Если вам нужны структурированные значения, проверяйте хост, переданный в
mysqli_connect(), а не разбивайте эту строку. - Для получения версии клиентской библиотеки MySQL (а не хоста подключения) используйте
mysqli_get_client_info(); для серверной стороны —mysqli_get_server_info().
Заключение
mysqli_get_host_info() — небольшая, но практичная диагностическая функция: она сообщает, как ваш скрипт подключился к серверу MySQL. Используйте её, когда нужно подтвердить или зафиксировать транспорт подключения, а для получения более подробной информации обращайтесь к mysqli_get_proto_info() или mysqli_get_connection_stats().