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
相关产品推荐
相关产品推荐

