PHP8源码编译环境pdo_mysql扩展加载报错问题求助
pdo_mysql加载提示mysqlnd未加载故障修复
该故障本质是PHP扩展加载依赖顺序错误,或pdo_mysql编译时未正确绑定mysqlnd依赖,按以下步骤排查修复即可:
优先排查扩展加载顺序问题
PHP会按配置文件的命名顺序依次加载扩展,pdo_mysql必须在mysqlnd加载完成后才能正常启动,顺序颠倒就会触发题述报错:- 执行命令查看PHP当前加载的配置路径:
记录输出中php --iniScan for additional .ini files in:对应的扩展配置目录路径,通常为PHP安装目录下的etc/conf.d文件夹。 - 进入该目录,查看所有扩展ini文件的命名排序:
排序越靠前的文件加载优先级越高,如果ls *.ini | sortpdo_mysql对应的ini文件名排在mysqlnd对应文件之前,就会触发加载错误。 - 重命名两个配置文件调整优先级,保证
mysqlnd先加载,例如:
如果是直接在主# 调整ini文件前缀数字,数字越小加载越早 mv 30-mysqlnd.ini 15-mysqlnd.ini mv 20-pdo_mysql.ini 20-pdo_mysql.iniphp.ini文件中写扩展加载项,把extension=mysqlnd.so行移动到extension=pdo_mysql.so行之前即可。 - 执行
php -m验证,无Warning即修复完成。
- 执行命令查看PHP当前加载的配置路径:
若调整顺序后仍报错,检查pdo_mysql编译参数
源码编译pdo_mysql时如果指定了系统自带的libmysqlclient作为依赖,而不是绑定内置的mysqlnd,也会出现依赖识别错误:- 回到pdo_mysql的源码编译目录,重新执行配置流程,指定使用mysqlnd作为依赖:
phpize ./configure --with-pdo-mysql=mysqlnd make clean make && make install - 若搭配php-fpm提供web服务,重启进程后再次验证即可。
- 回到pdo_mysql的源码编译目录,重新执行配置流程,指定使用mysqlnd作为依赖:
内容的提问来源于stack exchange,提问作者Alexandre Pineau
相关产品推荐
相关产品推荐

