Ubuntu 20.04下PHP 8.2的SQLSRV扩展加载失败求助
解决Ubuntu 20.04下PHP 8.2的SQLSRV扩展加载错误问题
问题根源
你遇到的核心问题是:安装的SQLSRV扩展是针对PHP 8.1(对应API版本20210902)编译的,但你当前使用的是PHP 8.2(对应API版本20220829),版本不匹配导致直接移动文件后出现兼容性报错。
解决步骤
1. 卸载错误版本的SQLSRV扩展
先移除已安装的不兼容扩展:
- 如果是通过
pecl安装的:sudo pecl uninstall sqlsrv pdo_sqlsrv - 如果是通过APT包管理器安装的:
sudo apt remove --purge php-sqlsrv php-pdo-sqlsrv sudo apt autoremove
2. 安装PHP 8.2的开发依赖
编译或安装对应版本的扩展需要PHP开发包:
sudo apt install php8.2-dev
3. 安装适配PHP 8.2的SQLSRV扩展
推荐使用微软官方源安装适配版本,步骤如下:
- 添加微软软件源:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list sudo apt update - 安装ODBC驱动(SQLSRV依赖):
sudo ACCEPT_EULA=Y apt install msodbcsql17 mssql-tools - 安装PHP 8.2专属的SQLSRV扩展:
sudo apt install php8.2-sqlsrv php8.2-pdo-sqlsrv
如果偏好使用pecl安装,需明确指定PHP版本:
sudo pecl -d php_suffix=8.2 install sqlsrv pdo_sqlsrv
4. 验证扩展加载状态
运行以下命令确认扩展已正确加载:
php -m | grep sqlsrv
若输出sqlsrv和pdo_sqlsrv,则说明安装成功。你也可以通过phpinfo()页面搜索sqlsrv关键字,确认扩展信息存在。
5. 清理残留文件(可选)
如果你之前手动将扩展文件移动到/usr/lib/php/20220829/目录,需删除这些残留文件避免冲突:
sudo rm /usr/lib/php/20220829/sqlsrv.so /usr/lib/php/20220829/pdo_sqlsrv.so
内容的提问来源于stack exchange,提问作者seth
相关产品推荐
相关产品推荐

