如何解决问题:您的 PHP 安装似乎缺少 MySQL 扩展

it_*_*ure -3 php mysql

环境:os 和 apache 以及 php 和 mariadb 版本。

uname -a
Linux MiWiFi-R3-srv 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64 GNU/Linux

sudo apachectl -v
Server version: Apache/2.4.25 (Debian)
Server built:   2019-10-13T15:43:54

php -v
PHP 7.0.33-0+deb9u6 (cli) (built: Oct 24 2019 18:50:20) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.33-0+deb9u6, Copyright (c) 1999-2017, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)

使用密码登录 mariadb 并输入status

Server:         MariaDB
Server version:     10.1.41-MariaDB-0+deb9u1 Debian 9.9
Run Code Online (Sandbox Code Playgroud)

检查 php-mysql:

sudo dpkg -l php-mysql
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  php-mysql      1:7.0+49     all          MySQL module for PHP [default]
Run Code Online (Sandbox Code Playgroud)

获取 mysql.so 库:

sudo find  /  -name  "*mysql.so"
/usr/lib/php/20151012/pdo_mysql.so
Run Code Online (Sandbox Code Playgroud)

检查所有包含 mysql 的模块:

php -m |grep  mysql
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_pdo_mysql.so' - /usr/lib/php/20151012/php_pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
mysqli
mysqlnd
pdo_mysql


sudo vim  /etc/php/7.0/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)

改写

; ... or under UNIX:
;
;extension=mysql.so
Run Code Online (Sandbox Code Playgroud)

作为

extension=mysqli.so
Run Code Online (Sandbox Code Playgroud)

或者

extension=mysqlnd.so
Run Code Online (Sandbox Code Playgroud)

或者

extension=pdo_mysql.so
Run Code Online (Sandbox Code Playgroud)

重启apache2和mariadb数据库,问题依旧,三种格式都不行,怎么解决?

Mat*_*ndh 8

pdo_mysql不一样mysql.somysqlPHP 7.0 中删除了旧扩展。支持的扩展名现在只有mysqli.

从那里开始,它取决于软件期望找到的内容 - 如果它需要旧mysql库,那么您将不得不使用垫片或旧 PHP 版本(即 PHP 7 之前的任何版本,例如 PHP 5.6)。

可以使用php7-mysql-shimmysql-shim(注意,这可能会出现一个小的性能损失),提供一种透明映射一个分派到老任何调用mysql库仍然支持mysqli库。只要您php7-mysql-shim通过 composer安装并且您的项目使用 composer,它就应该自动加载。

第三种选择是通过mysql-to-mysqlirector configuration运行原始代码,但是如果这不是您自己的代码,那么将来将很难维护。

.so无法加载的文件可能是因为权限问题。确保ls -al该文件并更正任何所有权或权限问题(chmod og+r <filename>可能)。