попытка подключения mysqli не удалась примерно через 20 секунд - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь настроить веб-сервер дома, используя XAMPP v3.2.2, работающий на 32-битном Windows 10 планшете.
Он имеет:
- Apache / 2.4.38 ( Win32)
- PHP Версия 7.3.2
- mysql Версия 15.1 Distrib 10.1.38-MariaDB, для Win32 (AMD64)

Настройка DNS для моего домена включает запись A , указывающий на мой внешний (назначенный провайдером и один и тот же в течение многих лет) IP-адрес, как для www.mydomain.mytld, так и для @.mydomain.mytld.

На моем маршрутизаторе настроена переадресация порта для сервера 80 на сервер .

Файл Apache httpd.conf содержит раздел:

<VirtualHost *:80>
    ServerName www.mydomain.mytld
    ServerAlias *.mydomain.mytld
</VirtualHost>

В MySQL пользователь базы данных username имеет SELECT, DELETE, * Привилегии 1020 * и UPDATE для доступа database из localhost.

В файле. php я подключаюсь к базе данных, используя:

$dbUrl = "127.0.0.1";
$dbUser = "username";
$dbPass = "password";
$dbName = "database";
$db = new mysqli($dbUrl, $dbUser, $dbPass, $dbName);

Работает нормально когда я получаю к нему доступ на самом сервере (используя http://127.0.0.1/).
Он также работает нормально, когда я получаю к нему доступ с другого компьютера в домашней сети, используя сетевой адрес сервера (http://192.168.178.35/).
Он также работает нормально, когда я получаю к нему доступ с другого компьютера в домашней сети, используя мой внешний (назначенный провайдером) IP-адрес.

Но ... когда я пытаюсь сделать то же самое при использовании моего доменного имени происходит сбой: «Предупреждение: mysqli :: __ construct (): (HY000 / 2002): Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение из-за сбоя подключенного хоста» ответить." в операторе $db = new mysqli(....

Я пробовал localhost и даже сетевой адрес сервера (192.168.178.35) для $dbUrl, а также пробовал включить номер порта 3306, все без безуспешно.
Попробовал также root пользователя со всеми привилегиями, результаты остались прежними.

Другие страницы на том же сервере (оба. html и. php), которые не используют базы данных, работайте нормально, используя мое доменное имя.

Где-то в inte rnet Я обнаружил, что, возможно, это можно решить, закомментировав (#) строку ::1 localhost в %WINDIR%\system32\drivers\etc file, но эта строка уже закомментирована в моем файле hosts.

Поскольку все работает нормально, используя мой внешний IP-адрес, просто не используя мое доменное имя, я ожидаю, что просто пропущу некоторые директивы где-то в одном из многих файлов конфигурации, но я не могу найти то, что мне не хватает.

Есть идеи, кто-нибудь?
Заранее спасибо.

1 Ответ

0 голосов
/ 22 марта 2020

Я обнаружил проблему.

Глупо я наблюдал за устаревшим кодом, который изменял значение переменной $ dbUrl на основе информации $ _SERVER ["SERVER_NAME"], между оператором присваивания и созданием объект mysqli. Я удалил старый код, и теперь он работает отлично.

Спасибо всем, кто нашел время, чтобы прочитать эту проблему, и извините, что потратил ваше время.

...