Ubuntu20.04下Laravel8执行migrate提示无法加载pdo_mysql.so如何解决
解决方案
- 修复扩展依赖与加载顺序错误
你遇到的undefined symbol: mysqlnd_allocator报错核心原因是pdo_mysql扩展依赖的mysqlnd扩展未先加载,或未正确安装,按以下步骤处理:
- 先还原你之前手动修改的php.ini配置:将
/etc/php/7.4/apache2/php.ini和/etc/php/7.4/cli/php.ini中取消注释的extension=pdo_mysql行重新注释,避免配置重复冲突。 - 完全卸载原有mysql相关扩展,避免残留文件冲突:
sudo apt purge php7.4-mysql php7.4-mysqlnd -y - 重新安装对应版本扩展:
sudo apt install php7.4-mysql php7.4-mysqlnd -y
- 用系统自带命令启用扩展,自动处理加载优先级
Ubuntu默认通过mods-available目录下的配置文件管理扩展加载顺序,不要手动修改php.ini加载扩展,执行以下命令:
sudo phpenmod mysqlnd pdo_mysql
执行完成后重启web服务:
sudo systemctl restart apache2
- 验证扩展加载状态
执行以下命令检查扩展是否正常加载:
php -m | grep mysql
正常输出应包含mysqlnd、pdo_mysql两项。
4. 验证Laravel迁移
清理Laravel配置缓存后重新执行迁移:
php artisan config:clear php artisan migrate
内容的提问来源于stack exchange,提问作者JDalri
相关产品推荐
相关产品推荐

