最近一段时间,我的WordPress后台总提示有新版本的WordPress 5.4.1
可用,但是它要求PHP 5.6.20
或更高,而我目前的版本是PHP 5.5.7
,所以决定升级PHP版本。
但自己对PHP了解不多,先在网上找了一圈文章,比较详细的大都是单纯的PHP升级流程,和WordPress相关的却零零散散,亲身填坑后发现它们区别很大,最后折腾了半天时间,总算升级成功,记录流程如下。
安装前准备
我的WordPress使用的是阿里云一键安装包,PHP和Apache紧密相关,
- PHP目录:
/alidata/server/php
- Apache目录:
/alidata/server/httpd
- Apache配置文件目录:
/alidata/server/httpd/conf
首先,cd ~
进入工作目录,lsb_release -a
查看系统版本,yum -y update
升级系统,php -v
查看php版本。
编译PHP源码
目前最新的PHP稳定版本是7.3.18
,我采用的是源码编译方式(尝试过7.3安装包,但安装后WordPress
不认,依然提示我的PHP版本太低)。
下载源码到工作目录,解压,进入PHP目录。
wget http://cn2.php.net/get/php-7.3.18.tar.gz/from/this/mirror
tar -zxvf php-7.3.18.tar.gz
cd php-7.3.18
安装依赖包
yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel
编译PHP
./configure --prefix=/alidata/server/php-7.3.18 --with-apxs2=/usr/bin/apxs --with-openssl --with-config-file-path=/alidata/server/php-7.3.18/etc --with-mysqli --with-pdo-mysql --with-gd --with-iconv=/usr/local/libiconv --with-zlib --enable-zip --enable-inline-optimization --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --with-pcre-regex --with-png-dir --enable-fileinfo
这一步很关键,其中。
--prefix
指定编译后的PHP路径,是/alidata/server/php-7.3.18
。--with-apxs2
指定要生成Apache加载的libphp7.so
,如果提示apxs2未安装,需要yum install httpd-devel
解决,同时确认自己的apxs路径,可以用which apxs
来查找,此处我的参数是--with-apxs2=/usr/bin/apxs
。
安装PHP
make && make install
这步执行时间较长,如果报错,根据提示做相应处理。
我碰到以下两个错误。1 找不到 libzip
实际是因为系统原有libzip太旧,按如下步骤解决。
cd ~ wget https://nih.at/libzip/libzip-1.2.0.tar.gz tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make && make install
2 fatal error: zipconf.h: No such file
解决方法
cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
编译完成后的配置
按前面配置,编译完成后的输出在
/alidata/server/php-7.3.5
。然后删除旧的PHP软链接,指向新版本的PHP。cd /alidata/server rm -fr php ln -s /alidata/server/php-7.3.5 /alidata/server/php
配置Apache
生成的
libphp7.so
存放在PHP源码目录下,需要手动复制到Apache目录下。cp ~/php-7.3.18/libs/libphp7.so /alidata/server/httpd/modules/libphp7.so
然后打开Apache配置文件
vim /alidata/server/httpd/conf/httpd.conf
注释旧的php5,使加载新的php7模块,保存。
#LoadModule php5_module modules/libphp5.so LoadModule php7_module modules/libphp7.so
重启Apache
service httpd restart
或者重启服务器也行。
更新WordPress
升级到
PHP7.3.18
版本后,就可以让WordPress自动更新了,成功!