2022年5月

上篇文章中我提到了进行PHP连接localhost慢的本地测试,我在本地计算机上搭建了Windows Server 2008虚拟机。安装MySQL 5.7时需要依赖Visual C++ 2013,但就在安装.NET时系统报了个错,提示信息为“已处理证书链,但是在不受信任提供程序信任的根证书中终止”。如下图:

11.png

这个错误我之前从来没有碰到过,可能是Win系统的测试环境用得少,经过一番查找,我了解到是由于Visual C++ 2013的证书并没有包含在Win2008系统中,导致系统不认为该安装程序可信。那么解决方案很显然,我们把证书装回来即可。

证书下载地址:微软官方下载

下载文件后,双击打开文件,点击“安装证书”。如下图:

2.png

点击下一步直到“证书存储”这一步,点击“浏览”按钮,选择“受信任的根证书颁发机构”,继续下一步直到结束。如下图:

3.png

最后一步会提示“安全性警告”,直接确定。

4.png

证书安装完毕之后,重新打开Visual C++ 2013安装程序,即可成功安装。如下图:

5.png

本博客使用typecho搭建,在部署到远程虚拟主机上之后,每个页面基本都需要3~4秒才能打开。

通过index.php里不断地使用二分法插入die()语句进行测试,最终定位到是连接MySQL数据库查询的时候会阻塞住2秒左右的时间,但MySQL与IIS是在同一台机器上,不应该出现延迟。

经多方查证,localhost这个默认主机名有可能在远程机器上的hosts文件中没有配置,或配置了IPv4与IPv6多条时,优先级设置有问题,这样有可能导致系统使用错误的解析地址进行处理。

开启IPv6的机器有可能会先返回“::1”,在部分场景下有可能导致判定为连接失败,然后才使用“127.0.0.1”地址处理,从而导致页面加载慢。

但经过本地环境搭建与重现,我未能重现这个问题。所以只能先抛出解决方案,其实只有一句话:

使用“127.0.0.1”代替“localhost”即可!

修改之后,问题解决!

众所周知,Windows系统有个传统艺能,就是通过“netplwiz”或者“control userpasswords2”设置免密码自动登录。前段时间在调整一台虚拟机的配置时,突然惊奇的发现,在设置免密码登录的时候居然找不到需要去掉勾选的复选框了。如下图:

iShot2022-05-11_11.52.04.png

在设置自动登录时,需要取消勾选“要使用本计算机,用户必须输入用户名和密码”复选框,然后点击确定,即会弹出自动登录时使用的用户名和密码,输入所需要自动登录的账户和密码即可。

经验证后发现,虚拟机所使用的是Win10 21H1版本的系统,该版本隐藏了这个复选框,从而无法设置自动登录。

解决该问题的方法其实非常简单,打开“运行”输入“regedit32”,进入“注册表编辑器”,打开如下路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device

双击右侧的“DevicePasswordLessBuildVersion”,将值由2改为0。如下图:

iShot2022-05-11_11.53.13.png

重新打开自动登录设置窗口,复选框又出现了,如下图:

iShot2022-05-11_11.53.35.png