WordPress升级PHP7
WordPress已经不让我升级了,因为这个站点之前一直是基于PHP5的,所以近几周总在琢磨着将站点的PHP升级,做了一些准备之后,又恰逢端午,于是放开手开始了。
网络上一搜一大堆,不过都具有相同的开始,那就是下载PHP最新版本,然后执行编译。
去往 http://php.net/downloads.php下载最新的版本,上传至服务器,使用命令解压:
tar -zxvf php-x.x.x.tar.gz
然后进入解压后的文件夹内,执行:
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache/bin/apxs --with-gd --with-mysqli --with-pdo-mysql --with-pdo-sqlite --with-zlib --enable-fpm --enable-mbstring --enable-sockets --disable-fileinfo
上面这个命令是我最后试出来,最开始使用的都是网上通篇一律的教程,结果各种失败,要更新各种工具或者包,实在是受不了。最后,先用
./configure --prefix=/usr/local/php7 --enable-fpm
装了个最简版本。再排除报错,基本都是升级相关的工具和包,这些升级按照网上那些教程来即可。
我这里使用php7,是因为之前的php5已经占用了文件夹“php”,所以为了并存,新创建了一个文件夹。
接着继续在此文件夹下执行“make”命令进行编译,然后再执行“make install”。最开始我执行的是“make & make install”,但是死活过不去,libtool总是各种报错,虽然网络上有解决办法,但是执行“make clean”一点效果都没有。
编译完毕后,更改Apache的httpd.cnf,修改为如下方式:
#LoadModule php5_module modules/libphp5.so
LoadModule php7_module modules/libphp7.so
此时,发现没有libphp7.so,这时候就安装了:
yum install httpd-devel
并且,在编译PHP时增加了--with-apxs2参数。
然后重启Apache,访问站点首页,直接提示:您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
然后为了解决这个问题,前后折腾了数个小时,把网络上的方法试了个遍(如何使用旧版本Mysql支持的)。后来想了想,Wordpress不会傻傻的还用已经废弃的Mysql连接,肯定会使用新的mysqli,于是在编译时又增加了一堆参数:
--with-gd --with-mysqli --with-pdo-mysql --with-pdo-sqlite
但是,还是报错,只是报错不一样了,会报“无法连接数据库”。于是,做了一个PHP的测试文件,发现确实连接不上,但是Mysql服务是正常的,使用工具也能连接上,百思不得其解,折腾来折腾去,发现只需要将“localhost”改为“127.0.0.1”就能连上。
此时,已经头昏脑涨,懒的想为什么了,先跑起来再说,遂改之,终于见到了熟悉的首页,顿时泪奔。
首页已经能够正常显示了,但是管理员界面仍旧有问题,于是又增加了编译参数:
--with-zlib
至此,整个站点终于升级完成。
主要注意的是:
--disable-fileinfo这个参数是为了防止内存不够的,毕竟我这个云机还是低配版的。
一些旧的模板使用了已经被废除的函数,还需要按照报错提示更新一下,这就是后话了。
我预计此工作将耗费3个小时,结果耗费了8个小时,还差点失败。本来我已经做了一个提示页了,打算慢慢修复了,但是结果还可以吧。

增加–with-curl,以便能够支持版本和插件更新。