昨天的帖子说到升级VPS把网站(cutehive.com)搞崩溃,费了九牛二虎之力把PHP解析问题、curl_init问题、见证人列表的喂价显示问题解决掉了。
(图源 :pixabay)
HP委派查询出错
不过还剩一个问题,那就是PHP连接并使用MSSQL问题。我在HP委派查询工具中,连接到HiveSQL,这样可以查询委派进来(Delegations In)的HP。
至于委派进来(Delegations Out)的HP,以及到期的委派(Expiring Delegations)等数据则直接来自链上。
结果昨天修复大堆的网站问题后,测试代理程序,显示如下:
Reveal spoiler
咦,这咋没了委派进来(Delegations In)的HP呢?
php-odbc以及Microsoft ODBC驱动
于是看了一下日志文件,果然是出错了:
PHP Fatal error: Uncaught Error: Call to undefined function odbc_connect()
原本应该一条指令就可以解决:
sudo apt install php-odbc
这条指令会在系统上安装php-odbc
以及php8.1-odbc
。不过我比较晕,以为系统上的ODBC驱动也坏掉了,于是按着这篇文章的步骤,在VPS上安装了微软为SQL SERVER(MSSQL)弄的ODBC驱动。
注意,这里有两个版本可以安装,分别为:
Microsoft ODBC 18: msodbcsql18
Microsoft ODBC 17: msodbcsql17
当我安装完Microsoft ODBC 18之后,我竟然惊奇地发现Microsoft ODBC 17也在。🤦并且安装php-odbc
后,PHP配合MSSQL工作的好好的,早知如此,我何必折腾?
继续折腾
一个VPS上竟然装两套Microsoft ODBC,是可忍熟不可忍?强迫症不出意料地犯了,必须卸掉一套。
那么保留哪个版本的驱动成了问题。不过既然升级Ubuntu系统到最新了,其它的也不能落后,都更新到最新吧,于是果断地把msodbcsql17卸载了。
然后在程序中把连接字符串改成Microsoft ODBC对应的信息,结果再测试程序,发现连接msodbcsql17时工作好好的程序,在msodbcsql18上又出错了。
出错信息如下:
PHP Warning: odbc_connect(): SQL error: [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]
这时候最简单地方法是回退到msodbcsql17上,毕竟之前工作得好好的,不过不折腾折腾岂能罢休?否则的话,VPS整个不升级,也工作得好好的呢。
解决certificate verify failed
于是继续去解决这个问题,功夫不负有心人,终于在微软网站上找到一篇技术文档
文档中关于错误的原因描述如下:
The error occurs because of a change in the default behavior of the client drivers. Older versions of client drivers are designed to assume that data encryption is OFF by default. The new drivers assume this setting to be ON by default. Because data encryption is set to ON, the driver tries to validate the server's certificate and fails.
翻译过来就是(谷歌翻译):
该错误是由于客户端驱动程序的默认行为发生更改而发生的。 较旧版本的客户端驱动程序旨在假定默认情况下数据加密是关闭的。 新驱动程序默认此设置为 ON。 由于数据加密设置为 ON,驱动程序尝试验证服务器的证书并失败。
解决方法也很简单(有两种):
- 降级回Microsoft ODBC Driver 17 for SQL Server. (啥,玩我呢?)
- 连接字符串加上
Encrypt = Optional;
按第二个解决方案处理了一下,测试后一切正常。经过一番折腾,HP委派查询工具总算正常了。
总结
经过两三天的折腾,网站(https://cutehive.com)彻底恢复正常。虽然浪费了不少时间,但是收获还是有的。
(图源 :pixabay)
以后我会在这个网站上增加更多的功能,帮助大家更好地使用HIVE区块链。
谢谢O哥,辛苦了。记住了这个网站。https://cutehive.com
謝謝 O 哥, https://www.cutehive.com 非常好用, 尤其 muted check, 我介紹給老外他們很喜歡 😁
看过了,全部没看懂。
再看一次。还是没看懂。告辞
👍👍