最近一段時間,我的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自動更新了,成功!