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

PHP8使用PDO连接MSSQL提示「找不到驱动」问题求助

解决PHP PDO连接MSSQL时“could not find driver”错误

你的核心问题是缺少PHP针对SQL Server的PDO驱动,以下是适配Ubuntu 20.04.4 LTS + PHP 8.0的完整解决步骤:

1. 安装SQL Server ODBC驱动

ODBC是PHP连接MSSQL的基础依赖,先完成安装:

# 导入微软GPG密钥
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
# 添加微软APT源
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
# 更新缓存并安装ODBC驱动
sudo apt update
sudo ACCEPT_EULA=Y apt install msodbcsql17

2. 安装PHP 8.0的SQL Server扩展(含PDO驱动)

# 安装编译依赖
sudo apt install php8.0-dev unixodbc-dev
# 通过PECL安装sqlsrv和pdo_sqlsrv扩展
sudo pecl install sqlsrv pdo_sqlsrv
# 创建扩展配置文件
sudo tee /etc/php/8.0/mods-available/sqlsrv.ini <<EOF
extension=sqlsrv.so
EOF
sudo tee /etc/php/8.0/mods-available/pdo_sqlsrv.ini <<EOF
extension=pdo_sqlsrv.so
EOF
# 启用扩展(同时生效于Apache和CLI环境)
sudo phpenmod sqlsrv pdo_sqlsrv

3. 重启Apache服务

sudo systemctl restart apache2

4. 验证驱动是否生效

执行以下命令,若输出sqlsrv和pdo_sqlsrv则说明安装成功:

php -m | grep -E 'sqlsrv|pdo_sqlsrv'

也可通过phpinfo()页面查看是否存在pdo_sqlsrv模块信息。

额外优化:修正代码中的错误处理逻辑

你当前代码用了PDO连接,但错误处理调用了mysqli_connect_error()(属于mysqli扩展的函数),建议改为PDO标准的异常处理:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

try {
    $db = new PDO("sqlsrv:Server=10.5.5.1,1433;Database=PWS", "Administrator", "password");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'connected';
} catch(PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:27:11