Ubuntu 16.04 上安装 Typecho

在上一篇文章中,我们已经完成了 LEMP 环境的搭建,这篇文章主要记录了安装 Typecho时遇到的几个坑。

上篇文章里,我们已经给博客预留了 blog 文件夹,我们需要把 Typecho 代码放到该目录下。

获取代码

wget https://github.com/typecho/typecho/releases/download/v1.0-14.10.10-release/1.0.14.10.10.-release.tar.gz

解压

 tar -zxvf 1.0.14.10.10.-release.tar.gz

把解压后的代码复制到 blog 目录就可以了

此时我们访问 blog.zhh.me 就会跳到 Typecho 的安装页面了。


在这里可能会踩到第一个坑,假如你没按照上一篇文章内容给数据库新建一个用户,在安装页面上直接使用root用户的话,页面就会提示

对不起,无法连接数据库,请先检查数据库配置再继续进行安装

此时使用新建的用户就可以了


安装成功后,你应该可以看到正常的网站首页了,当你去点击第一篇文章标题时,你应该会踩到第二个坑,页面404了。这是因为我们没有正确的配置 url 重写。

打开博客网站的 Nginx 配置文件 /etc/nginx/sites-available/blog

location / {...}try_files 项改为

try_files $uri $uri/ /index.php?$query_string;

重启 Nginx 使设置生效。


此时再去点击第一篇文章的链接,你应该会踩到第三个坑,如果你没打开报错,你就会看到页面500了。

如果你打开了 PHP 报错,你应该会看到错误信息

Fatal error: Uncaught TypeError: Argument 1 passed to Typecho_Common::exceptionHandle() must be an instance of Exception, instance of Error given in /var/www/html/blog/var/Typecho/Common.php:235 Stack trace: #0 [internal function]: Typecho_Common::exceptionHandle(Object(Error)) #1 {main} thrown in /var/www/html/blog/var/Typecho/Common.php on line 235

报错信息告诉我们 exceptionHandle 只接受 Exception 类型的参数,而调用该函数时给的却是 Error 类型的参数。这是因为在 PHP 7.0 中异常处理函数必须接受 ExceptionError 两种类型的参数,而这两种参数都由 Throwable 类型衍生而来,所以我们只需要把这个函数的参数类型改为 Throwable 即可。

打开 /var/www/html/blog/var/Typecho/Common.php ,找到 exceptionHandle() 函数,把该函数的参数改为

exceptionHandle(Throwable $exception)

此时再次刷新第一篇文章的页面,你应该会踩到第四个坑,页面提示

Call to undefined function utf8_decode() 

这个比较简单,是因为我们没有装 php 的多语言支持,运行安装命令即可

sudo apt-get install php7.0-xml

重启 Nginx 生效

标签:ubuntu / typecho

知识共享许可协议
版权声明:本文版权属于作者 plumes,并受法律保护。
本作品采用知识共享「署名 - 非商业性使用 - 相同方式共享 3.0 未本地化版本」许可协议进行许可。