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

求助:ODBC Driver 18 for SQL Server无法与PHP PDO建立连接

解决PHP PDO连接MSSQL自签名证书验证失败问题

针对你遇到的SQLSTATE[08001]证书验证错误,以下是几种可行的解决方法:

方法1:在DSN字符串中直接指定参数

PDO连接MSSQL时,部分驱动版本优先读取DSN中的配置,而非options数组。直接在DSN里添加TrustServerCertificate=Yes和Encrypt参数:

$server = "your_server_address";
$dbname = "your_database";
$dsn = "sqlsrv:Server=$server,1433;Database=$dbname;TrustServerCertificate=Yes;Encrypt=Yes";
$pdo = new PDO($dsn, $username, $password);
  • 如果你的环境允许不加密连接,也可以将Encrypt=No,但部分新版驱动可能强制加密,优先推荐Encrypt=Yes配合TrustServerCertificate=Yes。

方法2:使用PDO SQLSRV扩展的常量配置选项

如果要通过options数组传递参数,需使用扩展提供的预定义常量,而非字符串键名:

$options = [
    PDO::SQLSRV_ATTR_ENCRYPT => PDO::SQLSRV_ENCRYPT_YES,
    PDO::SQLSRV_ATTR_TRUST_SERVER_CERTIFICATE => true
];
$pdo = new PDO($dsn, $username, $password, $options);

之前你用字符串键(如'trust_server_certificate')无效,是因为该扩展不识别这种格式的键名,必须使用官方定义的常量。

方法3:全局配置php.ini(不推荐用于多连接场景)

如果需要全局生效,可修改php.ini文件添加以下配置:

sqlsrv.TrustServerCertificate = On
sqlsrv.Encrypt = On

修改后重启PHP服务即可,但此设置会影响所有MSSQL连接,适合单一数据库环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:07:23