首页 > 解决方案 > mysqli 连接尝试在大约 20 秒后失败

问题描述

我正在尝试在家中设置一个 Web 服务器,使用 XAMPP v3.2.2,在 32 位 Windows 10 平板电脑上运行。
它具有:
- Apache/2.4.38 (Win32)
- PHP 版本 7.3.2
- mysql Ver 15.1 Distrib 10.1.38-MariaDB,适用于 Win32 (AMD64)

我的域的 DNS 设置包括一个 A 记录,指向我的外部(ISP 分配,并且多年来相同)IP 地址,用于www.mydomain.mytld@.mydomain.mytld.

在我的路由器中设置了端口 80 到服务器的端口转发。

Apache 的httpd.conf文件包括一个部分:

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

在 MySQL 中,数据库用户对访问自username具有SELECTDELETE和权限。INSERTUPDATEdatabaselocalhost

在 .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/)从家庭网络中的另一台计算机访问相同的计算机时,它也可以正常工作。
当我使用我的外部(ISP 分配的)IP 地址从家庭网络中的另一台计算机访问相同的计算机时,它也可以正常工作。

但是......当我使用我的域名尝试相同时,它失败了:“警告:mysqli::__construct(): (HY000/2002): 连接尝试失败,因为连接方在一段时间后没有正确响应,或建立连接失败,因为连接的主机没有响应。” 在$db = new mysqli(...声明中。

我已经尝试localhost了甚至服务器的网络地址(192.168.178.35$dbUrl,并且还尝试了包括端口号3306,但均无济于事。
也尝试了root具有所有权限的用户,结果仍然相同。

同一台服务器上的其他页面(.html 和 .php)不使用数据库,使用我的域名可以正常工作。

我在互联网上的某个地方发现,也许可以通过注释掉文件中#::1 localhost行来解决这个问题%WINDIR%\system32\drivers\etc,但是该行已经在我的主机文件中被注释掉了。

由于使用我的外部 IP 地址一切正常,只是不使用我的域名,我希望我只是在许多配置文件之一的某处丢失了一些指令,但我找不到我丢失的东西。

任何想法,任何人?
提前致谢。

标签: phpmysqlapachemysqlidatabase-connection

解决方案


我发现了问题。

愚蠢的我监督了一些过时的代码,这些代码根据 $_SERVER["SERVER_NAME"] 信息在赋值语句和创建 mysqli 对象之间更改了 $dbUrl 变量值。我已经删除了旧代码,现在它可以完美运行。

谢谢大家,谁花时间阅读这个问题,很抱歉浪费你的时间。


推荐阅读