typecho在微信浏览器中不能正常打开的问题分析

in Theory with 0 comment

博客 https://blog.hanbinit.com.cn 是用typecho搭建的。

问题描述

最近开始写公众号了,将博客的链接加到了微信的原文链接中。但是有人反馈说原文链接打开报错,遂检查,发现确实打不开,错误如图:

微信浏览器打开失败

换用其他浏览器打开都是正常的。

分析过程

首先通过在根目录下的config.inc.php中添加define('__TYPECHO_DEBUG__', true);开启typecho的debug模式。

执行service nginx restart重启nginx,使上面的配置生效。

重新使用微信浏览器打开,这次提示了详细的错误信息。

SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'ua' at row 1

按照错误提示去分别查看微信浏览器UA(使用微信开发者工具),PC浏览器UA,以及数据库的ua字段大小。

微信:Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Mobile Safari/537.36 wechatdevtools/1.05.2102010 MicroMessenger/7.0.4 webview/16141376613598827 webdebugger port/22325 token/7c3a0c5eb7ac1ac7ed760c7c89af0e39

EDGE: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74

表结构:

typecho_accesss表结构

ua字段长度只有255,而微信的ua长度有274。所以就有了本文的问题。

修改ua字段的长度,

alter table typecho_access modify column ua varchar(512);

再次访问正常。

最后,删除第一步添加的配置,关闭typecho的debug模式。

写在最后

这个表不是typecho原生的表,是我使用了一个Access插件引起的。 不使用这个插件应该不会有问题。

Comments are closed.