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

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

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

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

如何配置apache或者nginx的`access 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文件中既可以看到非常详细的错误信息。

原创文章,作者:admin,如若转载,请注明出处:https://www.typechodev.com/case/790.html

(0)
上一篇 2017-02-28 上午9:14
下一篇 2017-02-28 上午10:53

相关推荐

发表评论

您的电子邮箱地址不会被公开。