Ubuntu22.04下PHP PDO通过FreeTDS连接SQLServer2019所需包咨询
在Ubuntu 22.04通过FreeTDS实现PHP PDO访问SQL Server 2019
可行性说明
可以通过FreeTDS实现PHP PDO访问SQL Server 2019。FreeTDS是开源的TDS(Tabular Data Stream)协议实现,PHP的PDO_DBLIB驱动依赖FreeTDS,能够与SQL Server建立连接。
所需依赖包
不能仅安装FreeTDS,还需要安装PHP的pdo-dblib扩展包——这是PHP实现PDO连接DBLIB(依赖FreeTDS)的核心扩展。除你提到的php、php-cli、php-common外,需要安装的包包括:
freetds-common、freetds-bin:FreeTDS核心组件php-pdo-dblib:对应PHP版本的PDO-DBLIB扩展(Ubuntu 22.04默认PHP为8.1,若使用其他版本需调整包名,如php7.4-pdo-dblib)
具体操作步骤
更新包列表并安装依赖
sudo apt update sudo apt install freetds-common freetds-bin php-pdo-dblib若使用非默认PHP版本(如7.4),需先添加PHP源:
sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php7.4-pdo-dblib配置FreeTDS
编辑FreeTDS主配置文件:sudo nano /etc/freetds/freetds.conf在文件末尾添加SQL Server的连接配置(替换占位符为实际信息):
[MSSQL2019] host = 你的SQL Server IP或主机名 port = 1433 tds version = 7.4 client charset = UTF-8保存退出后,测试FreeTDS连接是否正常:
tsql -S MSSQL2019 -U 数据库用户名 -P 数据库密码若进入
1>命令提示符,说明连接成功。PHP PDO连接测试
创建测试脚本test_pdo.php:<?php try { $dsn = 'dblib:host=MSSQL2019;dbname=你的数据库名'; $user = '数据库用户名'; $pass = '数据库密码'; $pdo = new PDO($dsn, $user, $pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "连接SQL Server成功!"; } catch (PDOException $e) { die("连接失败: " . $e->getMessage()); } ?>运行脚本验证:
php test_pdo.php
注意事项
- 确保SQL Server已开启远程连接,且服务器防火墙允许1433端口的TCP流量
- TDS版本需匹配SQL Server版本:SQL Server 2019使用
7.4是最佳选择 - 若连接出现字符编码问题,可调整
client charset为对应编码(如GBK)
内容的提问来源于stack exchange,提问作者Avery
相关产品推荐
相关产品推荐

