wordpress升级5.1后的一系列坑

wordpress自动更新至5.1版本后,提示升级PHP可提高性能。于是我开始对服务器进行了PHP升级···这里我升级至php7.2.16版本,升级历程如下:

检查wordpress上已安装插件是否支持PHP7.2

  • 在wordpress后台安装该插件:PHP Compatibility Checker,启用后对已安装插件进行扫描,可选择待检查支持的PHP版本,使用较为简单,此处不赘述。

安装PHP7.2版本

cd /usr/local/
#解压安装包
tar -xzvf php-7.2.16.tar.gz
cd php-7.2.16
#查看下帮助
./configure   --help
#执行编译
./configure --prefix=/usr/local/php \
 --with-curl \
 --with-freetype-dir \
 --with-gd \
 --with-gettext \
 --with-iconv-dir \
 --with-kerberos \
 --with-libdir=lib64 \
 --with-libxml-dir \
 --with-mysqli \
 --with-openssl \
 --with-pcre-regex \
 --with-pdo-mysql \
 --with-pdo-sqlite \
 --with-pear \
 --with-png-dir \
 --with-xmlrpc \
 --with-xsl \
 --with-zlib \
 --enable-fpm \
 --enable-bcmath \
 --enable-libxml \
 --enable-inline-optimization \
 --enable-gd-native-ttf \
 --enable-mbregex \
 --enable-mbstring \
 --enable-opcache \
 --enable-pcntl \
 --enable-shmop \
 --enable-soap \
 --enable-sockets \
 --enable-sysvsem \
 --enable-xml \
 --enable-zip
 #执行过程中可能会提示缺少依赖库,使用yum安装依赖库,基本包含如下:
 yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre-devel curl-devel libxslt-devel
 #上述操作无误后,编译安装:
 make &&  make install
 #配置文件
cp php.ini-development /usr/local/php-7.2.16/lib/php.ini
cp /usr/local/php-7.2.16/etc/php-fpm.conf.default /usr/local/php-7.2.16/etc/php-fpm.conf
cp /usr/local/php-7.2.16/etc/php-fpm.d/www.conf.default /usr/local/php-7.2.16/etc/php-fpm.d/www.conf
cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm
#若已有旧版本运行,先杀掉旧的php进程
ps -ef | grep "php-fpm"
#找到对应pid后,执行
kill 'pid'
#启动
/etc/init.d/php-fpm
  • 此时服务器已完成php升级,但是竟然发现升级后博客无法访问,页面提示数据库无法连接的错误。检查下数据库配置没错,看了下wordpress5.1的wp-db.php页面,发现更新后的wordpress对mysql和mysqli扩展都支持,也就是说问题不在wordpress上,那看来就是php7对旧版本的mysql扩展不支持了。原来php7采用了mysqli和mysqlnd扩展,默认已不再支持mysql扩展···然鹅我的服务器mysql还是5.0.1版本···于是我尝试了还原mysql扩展,操作如下:

找回mysql扩展

#编写一个php页面检查phpinfo及能否连接mysql
<?php
echo phpinfo();
$link=MySQLi_connect('localhost','J3gm2lWz','uDwSOHvv11M7','J3gm2lWz');
if(!$link) echo "Error !";
else echo "Ok!";
MySQLi_close();
?>
#将此页面放在/yjdata/www/www/下,即项目根目录下,在浏览器上访问即可验证是否实现对mysql的连接~

访问网站是否完成升级

  • 正常的话升级就结束了,而且我发现性能的确有了很大提升,之前整个网站访问延时都是秒级,现在似乎大部分都在1秒内即可加载完成了。而且对接wordpress的微信小程序,之前经常性的刷不出页面,无法访问,现在基本不再遇到了。丝滑到底~哈哈~
  • 我这里使用了wp-photo-album插件, 升级后还遇到了一个错误:网站首页最上栏出现错误信息Warning: fopen(/yjdata/www/www/wp-content/plugins/wp-photo-album-plus/dynamic/wppa-init.zh.js): failed to open stream: Permission denied in /yjdata/www/www/wp-content/plugins/wp-photo-album-plus/wppa-wrappers.php on line 233,看起来是文件/文件夹权限问题,我这里暴力对整个文件夹采用了chmod +777 /yjdata/www/www/wp-content/plugins/wp-photo-album-plus/*操作,立马解决了,但我的wordpress其实还有一个遗留问题就是下载更新插件,上传多媒体文件都需要输入FTP账户密码,显然是隶属于的用户和组有问题,没有写权限,不过一直还没仔细排查处理。感觉这个wp-photo-album插件问题也和遗留问题类似,尚待解决啊!