wordpress收到了php升级提醒,由于操作系统比较旧,官方源并未提供php7.4版本,从网上搜了好多教程,一步步做下来,还是遇到了两个报错“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”、“此站点遇到了致命错误。”,心情顿时奔溃。
多个教程加上踩坑经历整理出安装教程如下
第 0 步:禁用旧版本
a2dismod php7.0
service apache2 restart
注意是 restart 不是start。第一次安装由于没有注意重启导致安装后找不到mysql模块
第 1 步:添加 PHP PPA 存储库
我们将使用 PPA 存储库,其中包含最新的 PHP 构建包。但要先安装依赖包。
sudo apt update
sudo apt -y install software-properties-common
添加存储库:
sudo add-apt-repository ppa:sergey-dryabzhinsky/php74
sudo add-apt-repository ppa:sergey-dryabzhinsky/php7-modules
sudo add-apt-repository ppa:sergey-dryabzhinsky/backports
sudo add-apt-repository ppa:sergey-dryabzhinsky/packages
步骤2:在Ubuntu 18.04/16.04上安装PHP 7.4
使用以下命令在 Ubuntu 上安装 PHP 7.4:
sudo apt -y install php7.4
检查安装的版本:
$ php -v
PHP 7.4.33-SergeyD/6.1 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
使用以下命令安装其他软件包:
sudo apt install php74p-mod-{mysqlnd,bcmath,bz2,gd,intl,mbstring,zip,json}
注意应该是mysqlnd,mysql不行,许多文档写的是mysql
与Apache相关的PHP配置存储在/etc/php74/apache2/php.ini
安装完确认PHP版本:
$ php –version
PHP 7.4.33-SergeyD/6.1 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
将 PHP 7.4 与 Apache 结合使用
安装 Apache PHP 模块。
sudo apt install libapache2-mod-php74
安装完执行
a2enmod php74 && service apache2 restart 重要
问题解决:
1、安装完成后启动apache 访问wordpress 报“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”
php -m 没有mysqli mysqlnd的相关内容
~# php -m
[PHP Modules]
bcmath
bz2
Core
ctype
date
filter
gd
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
zip
zlib
[Zend Modules]
或者在wordpress 根目录创建phpinfo.php 文件
<? php phpinfo(); ?>
浏览器访问查看是否有mysql模块
按上面的步骤重装了N遍还是找不到mysql模块,考虑可能是卸载不干净,然后使用彻底删除(见彻底删除php)
最后找到原因竟然是由于没有service apache2 restart导致
2、解决mysql后报“此站点遇到了致命错误。”
开启调试模式
一、开启 WP Debug 模式访问主页显示错误详情Call to undefined function json_decode()
开启 DEBUG 模式显示详细的错误信息。
打开 WordPress 配置文件 wp-config.php,将 WP_DEBUG 这一行修改为如下代码即可:
// 开启WP_DEBUG模式
define( ‘WP_DEBUG’, true);
// 开启DEBUG日志,一定要记得关闭这个日志功能并清理这个日志文件哦,产生的日志文件在: /wp-content/debug.log
define( ‘WP_DEBUG_LOG’, true);
// 显示errors and warnings
define( ‘WP_DEBUG_DISPLAY’, true);
@ini_set( ‘display_errors’, ‘On’);
调试好后,请千万记得关闭 DEBUG 模式,即将上述内容改回:
define( ‘WP_DEBUG’, false);
二、开启json
修改/etc/php74/apache2/php.ini
追加 extension=json
然后重启apache2,正常访问