晓波博客

争做优秀原创个人博客。

typecho从php5升级php7记录贴。

心血来潮,想要升级一下主机的php版本。原先的版本是php5,用yum update和install升级都遇到的依赖的错误。更换yum源也不行。
索性直接把所有的php包删除算了,然后打算重新安装php7这样的话应该不会依赖错误了。主机配置比较低,源码包方式太慢,就用yum最方便。

如果是云服务器,请在操作前保存一下快照,防止出错。不能快照的话直接备份mysql数据库,把整个网站根目录打包。
然后,在你typecho的后台,把所有的插件停止。防止升级完成后因为插件问题导致网站不能访问,后台可以的尴尬情况。
上述工作完成后,先停止相关服务:

systemctl stop php-fpm 
systemctl stop nginx //我用的nginx,用的其他的web服务器请自行停止。

接着查看一下现在已经安装了那些php包:

rpm -qa |grep php > phplist.txt
cat phplist.txt

保存好必要的信息后,可以开始卸载php所有的包。

rpm -e `rpm -qa | grep php` --nodeps
#使用rpm卸载更安全一点--nodeps是不检查依赖,防止把依赖卸载某些程序或者系统出现故障。

确认要卸载的包和相关依赖没有问题后按y开始卸载。
完成后开始添加php的yum源和依赖需要的epel源。

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm //这个是php源,用的人比较多安全性至少它能提供验证。其他版本系统访问http://mirror.webtatic.com/yum/就能找到
wget https://mirrors.aliyun.com/repo/epel-7.repo //epel阿里云源,其他系统版本https://mirrors.aliyun.com/repo/
yum clean all 
yum makecache

现在可以查看可以安装那些php版本了,但是我们这里只需要php7.0所以我用命令过滤一下:

yum list | grep php70w

接着直接把所有的php70的包安装上,已经包括了php-fpm,php-Pdo等。
这里会提示一个安装包错误,因为php-mysql与php-mysqlnd只能安装其中一个,所以我们加上--skip-broken
跳过,他只会安装其中一个。

yum install php70w* --skip-broken

完成后在安装一下markdown的php拓展,否则启用某些markdown的插件和解析语法时会出错。有可能就像是这样:

Call to undefined function mb_convert_encoding()

使用下面命令开始安装:

yum install php-markdown

操作都完成后,启动php,web服务。清除浏览器缓存,访问网站即可。

systemctl start nginx
systemctl start php-fpm

提醒一下,php7版本不在支持mysql的链接方式了,如果你是mysql链接方式,必须改用Pdo-mysql方式,所以在此之前要更改typecho根目录下的config.inc.php配置文件。把最后的定义数据库参数:

$db = new Typecho_Db('Mysql', 'typecho_');

改为,

$db = new Typecho_Db('Pdo_Mysql', 'typecho_');

如果不改的话会报databases错误。
祝好运!


本文由 xiaobo 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

添加新评论