在上一篇文章中,我们已经完成了 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 中异常处理函数必须接受 Exception
和 Error
两种类型的参数,而这两种参数都由 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 生效
版权声明:本文版权属于作者 plumes,并受法律保护。
本作品采用知识共享「署名 - 非商业性使用 - 相同方式共享 3.0 未本地化版本」许可协议进行许可。