PHP 7.0+ 已彻底移除 ext-mysql,必须启用 mysqli 和 pdo_mysql 扩展;需确认版本、扩展路径及 .so 文件存在,修改 php.ini 启用对应扩展并重启服务,升级至 PHP 8.1+ 更安全可靠。

PHP 版本太低(比如 5.6 或 7.0)时,ext-mysql 这类旧扩展已彻底移除,ext-mysqli 和 ext-pdo_mysql 是唯一可用选项;强行启用废弃扩展会导致启动失败或报 PHP Warning: PHP Startup: Unable to load dynamic library 错误。
确认当前 PHP 版本和可用扩展目录
先别急着改配置,先看清楚你手上是什么版本、扩展在哪:
- 运行
php -v确认实际版本(注意 CLI 和 Web SAPI 可能不同,phpinfo()更准) - 运行
php -i | grep "extension_dir"找到扩展存放路径,比如/usr/lib/php/20151012/(数字是 Zend API 版本,和 PHP 小版本强绑定) - 进该目录执行
ls -l *.so,确认mysqli.so、pdo_mysql.so是否真实存在
启用 mysqli 和 pdo_mysql 扩展(PHP 7.0+ 必须)
旧版 mysql.so 在 PHP 7.0+ 中已被完全删除,不存在“开启”一说。必须改用 mysqli 或 PDO:
- 编辑
php.ini(用php --ini查找位置),取消注释或添加这两行:extension=mysqli
extension=pdo_mysql - 若提示
Unable to load dynamic library 'mysqli',说明.so文件名不匹配——部分系统要求写全名,如extension=mysqli.so - 重启 Web 服务(
systemctl restart apache2或service php-fpm restart)
升级 PHP 是更稳妥的解法(尤其低于 7.4)
PHP 7.2 已于 2020 年停止支持,7.3 也已 EOL;继续用低版本不仅扩展受限,还面临安全漏洞无修复、json_encode 行为差异、mbstring 编码处理异常等隐性问题:
立即学习“PHP免费学习笔记(深入)”;
- Ubuntu/Debian 推荐用
ondrej/phpPPA 源安装 8.1+:sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.1 php8.1-mysql php8.1-curl - CentOS/RHEL 8+ 可直接
dnf module install php:remi-8.1(需启用 EPEL + Remi 仓库) - 切勿手动编译低版本再硬塞新扩展——ABI 不兼容,
Segmentation fault是常态
真正卡住人的往往不是“怎么开扩展”,而是没意识到:PHP 5.x/7.0 的扩展机制和 7.4+ 差异极大,zend_extension 和 extension 加载顺序、线程安全(TS/NTS)标记、以及 .so 文件的 ABI 版本号,任何一个对不上都会静默失败。











