php里的通用扩展一定要全部安装吗,“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”的通用根治办法(多系统完整版)...

(本文的办法只限Linux主机) 虽然我不是Wordpress的用户,但是调试MySQL最好的办法是安装Wordpress,所以我会隔一两年、几年在本机安装Wordpress。出现“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”,虽然是一个公认的老掉牙的问题,我为了开发一键LAMP/LNMP的MySQL安装部分,经过这几天的多系统调试,发现出现这个提示,并没有大家想象中的简单,是一个有些复杂的问题,尤其是现在到了PHP 7更容易出现这个报错。

出现这个提示唯一的原因是:Linux主机没有安装MySQL扩展。

如果您的主机是用纯手动输入Shell命令安装的LAMP或LNMP,容易出现这个提示。

经过多系统的调试,Debian、Ubuntu、CentOS的Apache/Nginx、PHP,甚至MySQL,需要的组件几乎都是一模一样的,只是命令会有少量区别。

解决“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”的提示,只需这2步,或者说安装MySQL时,只需安装这2个:

CentOS 5/6:

yum -y install mysql-server php-mysql;

CentOS 7:

yum -y install mariadb-server php-mysql;

Debian 7/8和Ubuntu 12/14:

apt-get -y install mysql-server php5-mysql;

Debian 9/10和Ubuntu 16及以上的版本:

apt -y install mariadb-server php-mysql;

如果系统已安装了Apache/Nginx、PHP,只需安装上述这2个,就可以正常运行Wordpress,然后需要重启Apache/Nginx、重启MySQL,就不会有标题的错误提示。

PHP 7.X下出现这个报错

Ubuntu 16及以上的版本、Debian 9.9及以上的版本,自带源的PHP版本都是PHP 7.X,用上述命令安装,也不会有标题的报错。

如果一旦用第三方的软件源安装,安装完毕,就会有“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”的报错。

原因在哪里呢?经过昨天一天的排查,是因为如果改用了第三方的软件源的PHP版本,则php-mysql扩展安装时,这个软件名称必须带版本号。CentOS 6/7比较好解决,解决办法是先安装php-mysql,然后再安装PHP 7.X,这样等于是把PHP 5的php-mysql移植到PHP 7.X下。

CentOS的解决办法2,如果此时已经安装第三方软件源的PHP 7.X,则先卸载PHP 7.X,再安装php-mysql,再安装PHP 7.X,标题的报错会解决。

CentOS 5/6/7安装php-mysql的命令:

yum -y install php-mysql;

(注:如果系统里已经安装第三方软件源的PHP 7.X,此时运行yum -y install php-mysql,会有报错,报错内容和原因如前文。)

上述这个移植的方法,到了Debian 7/8/9、Ubuntu 12/14/16下尝试,都行不通。需要给php-mysql加版本号。如果是Debian 9/10和Ubuntu 16及以上的版本用自带源的方法安装PHP 7.X,则php-mysql不用加版本号,命令是:

apt-get -y install php-mysql;

如果Debian、Ubuntu使用第三方软件源安装的PHP,此时php-mysql的版本号写在“php”的后面,例如php7.4-mysql,而且最好在安装PHP的时候一同安装,语句写在一起,例如:

Debian 8/9/10通过sury安装PHP 7.4:

(sury命令由于有时效变化,省略……)

apt update; apt -y install php7.4 php7.4-mysql;

Ubuntu命令和方法同上:

Ubuntu 16及以上的版本通过PPA安装PHP 7.4:

(PPA命令由于有时效变化,省略……)

apt update; apt -y install php7.4 php7.4-mysql;

CentOS 6/7如果用了第三方软件源remi安装的PHP 7.X,除了上述的2种解决办法,还可以用Debian、Ubuntu同样的方法来安装php-mysql扩展,同样需要加版本号,只不过版本号变为一个安装参数,命令如下:

yum -y install epel-release;

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

(↑CentOS 7)

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

(↑CentOS 6)

yum -y --enablerepo=remi-php74 install php php-mysql;

经过多系统的测试,LAMP、LNMP下,MySQL、php-mysql扩展的安装命令、步骤和调试没有任何区别,所以上述的方法在LAMP、LNMP均适用。

最后,LAMP需要重启Apache、重启MySQL;LNMP需要重启Nginx、重启fpm、重启MySQL。

本文的方法已在上述提到的所有系统、PHP 5、PHP 7.X、PHP 7.4+Wordpress里测试通过,所以写下这篇总结。

重点说明:Linux主机安装php-mysql扩展不需要修改php.ini

在尝试出本文的解决办法之前,我前几天搜遍了网络,有少量文章很有帮助,其中有一篇是完整安装Wordpress的过程,正是由于这个成功的安装过程,才为我找到解决办法提供了启发。而搜到的很多文章,是相同的复制。复制如果是用于备份,对读者是有益的,防止优秀的技术失传。但是相同的网页太多,影响搜索引擎的结果的质量,占用读者的时间。

其中这些相同的文章里,有很多提到修改Linux主机下的php.ini,并且编译出一个msql.so或者mysql.so。这个方法我试了很久,没有成功。

本文是通过安装php-mysql、或php5-mysql、或php7.X-mysql解决的,全程没有修改php.ini。

附带说明

附1:Debian 9.1的自带源是PHP 5,Debian 9.9的自带源是PHP 7,所以上述的命令里的php-mysql可能会有不同,凡是自带源是PHP 5,则Debian、Ubuntu的名称是php5-mysql;如果自带源是PHP 7,则名称是php-mysql。

但是,无论Debian 9.X的自带源是PHP 5,还是PHP 7,都可以统一用这个命令:

apt -y install php-mysql;

附2:除了php-mysql安装时会涉及到版本号的问题,Debian、Ubuntu系统下的php5-gd的这个扩展,同样和php-mysql有可能也需要相应地加版本号,这一项未在多系统下测试。

php5-gd是一个重要的PHP扩展,它用于处理图片,例如产生缩略图。

附3:如前文的测试,虽然CentOS的PHP性能跑分不如Debian、Ubuntu系统,但是CentOS系统也有一些做得很好的地方,比如安装软件时不需要版本号,如php、php-mysq、php-gd这些组件。

附4:mysql-server、或mariadb-server不受PHP 5、PHP 7版本号的影响。

PHP 5、或PHP 7下安装的mysql-server理论上是完全相同的。例如Debian 8.0+自带源PHP 5.6.40和Debian 8.0+sury+PHP 7.4.0,这2个平台下安装的mysql-server是完全一样的。

5条评论:

https://hqidi.com/51.html

2   来自未知的用户 2020-06-04 16:14

谢谢你,问题解决了。

3   TT 2020-06-26 22:24

太感谢了,折腾了几天没想到是这样的问题

4   clumsy 2020-10-28 09:18

百度搜到的都是互相复制 啥也没说清楚 谢谢你啦

自由勇 2020-10-28 09:33

谢谢浏览和回复!:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值