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

macOS+Brew环境下Laravel连接SQL Server遇SSL协议错误求助

解决macOS Brew环境下Laravel连接SQL Server的SSL协议不支持错误

以下是针对你遇到的[Microsoft][ODBC Driver 17 for SQL Server] SSL Provider: [error:0A000102:SSL routines::unsupported protocol]错误的可行解决方案:

方案1:指定ODBC驱动的SSL协议版本

  • 找到ODBC驱动配置文件odbcinst.ini,通常路径为/usr/local/etc/odbcinst.ini或~/.odbcinst.ini
  • 在[ODBC Driver 17 for SQL Server]段中添加配置:
    SSLProtocol=TLSv1.2
    
  • 保存后重启PHP-FPM或你的Web服务

方案2:在Laravel数据库配置中强制指定SSL协议

编辑config/database.php中sqlsrv连接的配置数组,添加SSL相关选项:

'sqlsrv' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '1433'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'prefix' => '',
    'prefix_indexes' => true,
    'options' => [
        PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8,
        'TrustServerCertificate' => 'yes',
        'SSLProtocol' => 'TLSv1.2'
    ],
],

也可以在.env中新增变量方便管理:

DB_SSL_PROTOCOL=TLSv1.2

再将配置中的对应项改为'SSLProtocol' => env('DB_SSL_PROTOCOL', 'TLSv1.2')

方案3:重新编译适配OpenSSL 3的SQL Server扩展

由于错误出现在brew update之后,大概率是OpenSSL版本更新导致扩展兼容性问题,重新安装扩展适配当前环境:

  • 先卸载现有扩展:
    brew uninstall shivammathur/php/php@8.2-pdo-sqlsrv shivammathur/php/php@8.2-sqlsrv
    
  • 确保系统当前使用OpenSSL 3:
    brew link openssl --force
    
  • 重新安装扩展:
    brew install shivammathur/php/php@8.2-pdo-sqlsrv shivammathur/php/php@8.2-sqlsrv
    

安装完成后重启PHP服务。

方案4:检查SQL Server端的SSL配置

确认你的SQL Server实例已启用TLS 1.2协议:

  • 登录SQL Server所在服务器,打开「SQL Server配置管理器」
  • 展开「SQL Server网络配置」→ 对应实例的「协议」
  • 右键「TCP/IP」→「属性」→「证书」和「标志」选项卡,确认TLS 1.2已启用

内容的提问来源于stack exchange,提问作者Ainz Ooal Gown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:22:12