快速定位typecho问题的简单方法汇总

很多同学在安装typecho之后,经常出现各种奇怪的问题,想定位问题却无从下手。本文简单列举一下定位web程序问题的简单方法。

首先,确保你的请求已经走到服务器

这个是定位问题的大前提,先简单排除一下是否网络问题导致服务异常。常见的网络问题包括dns不生效、dns解析错误、http端口被防火墙拦截、apache/nginx工作不正常等。

确定网络问题的方法很简单,打开apache或者nginxaccess log观察即可。

如何配置apache或者nginxaccess log请自行百度。

如果网络正常,tailf /var/log/apache/typechodev.com.access.log可以看到你的网络请求日志。

开启typecho调试模式,观察错误log

在网站根目录下的入口文件index.php开头处增加如下代码:

#file: index.php
define('__TYPECHO_DEBUG__',true);//add by https://www.typechodev.com

再次访问出错的页面,正常情况下可以看到类似这样的信息:

Table 'typecho.te_options' doesn't exist

exception 'Typecho_Db_Query_Exception' with message 'Table 'typecho.te_options' doesn't exist' in /var/www.typechodev.com/var/Typecho/Db/Adapter/Mysql.php:77
Stack trace:
#0 /var/www.typechodev.com/var/Typecho/Db.php(319): Typecho_Db_Adapter_Mysql->query(Object(Typecho_Db_Query), Resource id #2, 1, 'SELECT')
#1 /var/www.typechodev.com/var/Typecho/Db.php(349): Typecho_Db->query(Object(Typecho_Db_Query), 1)
#2 /var/www.typechodev.com/var/Widget/Options.php(345): Typecho_Db->fetchAll(Object(Typecho_Db_Query), Array)
#3 /var/www.typechodev.com/var/Typecho/Widget.php(222): Widget_Options->execute()
#4 /var/www.typechodev.com/var/Widget/Init.php(27): Typecho_Widget::widget('Widget_Options')
#5 /var/www.typechodev.com/var/Typecho/Widget.php(222): Widget_Init->execute()
#6 /var/www.typechodev.com/index.php(17): Typecho_Widget::widget('Widget_Init')
#7 {main}

通过此信息,可以看出大部分出错的原因,并针对性解决即可。

还可以通过查看apache/nginx错误log定位问题

有些情况下,typecho调试模式可能会工作不正常(譬如在php7下跑typecho1.0,可能会遇到问题,或者主题或者插件中存在语法错误,导致服务器down掉),那么可以通过观察apache或者nginx的error log来定位问题。

开启error log的方式同上文的 access log,不懂请自行百度。开启之后重启apache,再次访问出错页面,在error log文件中既可以看到非常详细的错误信息。


版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。