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

