You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian11下PHP8.2 CLI无法加载mysqlnd等MySQL相关扩展问题

解决Debian11下PHP8.2 CLI模式MySQL扩展加载失败问题

问题核心分析

从报错信息看,mysqlnd.so无法找到EVP_PKEY_CTX_new符号(属于OpenSSL库),后续mysqli和pdo_mysql因依赖mysqlnd也加载失败。这通常是PHP CLI的扩展依赖缺失、库版本不匹配,或是系统中存在多版本PHP冲突导致的。

分步解决方案

1. 检查mysqlnd扩展的依赖库

执行以下命令查看mysqlnd.so的依赖是否完整:

ldd /usr/lib/php/20220829/mysqlnd.so

如果输出中出现not found的项(尤其是libcrypto相关),说明依赖库缺失。

2. 修复OpenSSL依赖

Debian11默认使用OpenSSL 1.1.1,安装对应的开发包以确保依赖完整:

apt update && apt install libssl-dev

3. 彻底重装PHP MySQL相关扩展

先卸载现有扩展,再重新安装:

apt purge php8.2-mysql php8.2-mysqlnd
apt install php8.2-mysql php8.2-mysqlnd

注:Debian中php8.2-mysql依赖mysqlnd,重装会自动处理依赖关系。

4. 调整CLI配置的扩展加载顺序

编辑CLI的php.ini文件:

nano /etc/php/8.2/cli/php.ini

确保扩展加载顺序为mysqlnd优先,后加载mysqli和pdo_mysql,取消对应行的注释:

extension=mysqlnd
extension=mysqli
extension=pdo_mysql

5. 验证CLI配置路径与扩展目录

确认CLI使用的是正确的配置文件:

php -i | grep "Loaded Configuration File"

输出应指向/etc/php/8.2/cli/php.ini。同时检查扩展目录:

php -i | grep "extension_dir"

输出应匹配/usr/lib/php/20220829/。

6. 排查多版本PHP冲突

如果之前手动编译过PHP,可能存在路径冲突,检查当前PHP CLI的路径:

which php

如果输出是/usr/local/bin/php,说明系统优先使用了手动编译的版本,需要删除该版本或调整PATH:

rm /usr/local/bin/php

之后重新运行which php,确认指向/usr/bin/php。


内容的提问来源于stack exchange,提问作者DarkLlama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:07:26