Ubuntu20.0下PHP8.1的sqlsrv及pdo_sqlsrv驱动启用失败求助
解决PHP8.1在Ubuntu20.04上无法加载sqlsrv/pdo_sqlsrv扩展的问题
1. 确认扩展包适配PHP8.1版本
你可能误安装了适配PHP7.4的扩展包,先检查已安装的sqlsrv相关包:
dpkg -l | grep sqlsrv
确保输出包含php8.1-sqlsrv和php8.1-pdo-sqlsrv,如果只有php7.4版本的包,重新安装对应版本:
sudo apt install php8.1-sqlsrv php8.1-pdo-sqlsrv
2. 检查是否修改了正确的php.ini文件
你仅修改了Apache对应的/etc/php/8.1/apache2/php.ini,但php -m用的是CLI模式的配置文件,路径为/etc/php/8.1/cli/php.ini,需要在该文件中同样添加:
extension=pdo_sqlsrv.so extension=sqlsrv.so
也可以通过命令确认CLI模式加载的配置文件路径:
php -i | grep "Loaded Configuration File"
3. 手动启用PHP8.1的扩展
运行以下命令为PHP8.1启用目标扩展:
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
验证扩展是否已启用:
php8.1 -m | grep -E "sqlsrv|pdo_sqlsrv"
4. 重启Apache服务
修改Apache配置后必须重启服务才能生效:
sudo systemctl restart apache2
5. 检查ODBC驱动依赖
sqlsrv扩展依赖ODBC驱动,确认安装的是兼容PHP8.1的版本(建议ODBC 17+):
odbcinst -j
若版本过低,更新ODBC驱动:
sudo apt-get install msodbcsql17
6. 查看错误日志定位问题
查看Apache的PHP错误日志,获取扩展加载失败的具体原因:
sudo tail -n 20 /var/log/apache2/error.log
查看CLI模式的PHP错误输出:
php8.1 -d display_errors=1 -m 2>&1 | grep -A 10 -B 2 "sqlsrv"
内容的提问来源于stack exchange,提问作者Hemant Kumar
相关产品推荐
相关产品推荐

