php - 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
具有SELECT
、DELETE
和权限。INSERT
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/)从家庭网络中的另一台计算机访问相同的计算机时,它也可以正常工作。
当我使用我的外部(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 地址一切正常,只是不使用我的域名,我希望我只是在许多配置文件之一的某处丢失了一些指令,但我找不到我丢失的东西。
任何想法,任何人?
提前致谢。
解决方案
我发现了问题。
愚蠢的我监督了一些过时的代码,这些代码根据 $_SERVER["SERVER_NAME"] 信息在赋值语句和创建 mysqli 对象之间更改了 $dbUrl 变量值。我已经删除了旧代码,现在它可以完美运行。
谢谢大家,谁花时间阅读这个问题,很抱歉浪费你的时间。
推荐阅读
- methods - 带有扭曲的根路径示例?
- python - 如何使用 flow_from_directory 将更多图像加载到内存
- android - ANDROID:应用程序检索到错误的目录/文件路径
- python - 最小化具有线性约束和神秘约束的非凸函数
- assembly - 为什么地址显示不同?(gdb)
- python - 在 Django.contrib.auth 视图中使用应用程序名称
- python - 如何使用 python-docx 查找和加粗某些单词?
- html - 在 HTML/CSS 中垂直显示表格
- filesystems - 从 USB 或 SD 卡修复损坏的 WinCE 6.0
- python - “ctx”到底在做什么 discord.py