php连接sqlsrv流程记录

本文记录了在Mac M1系统中,使用Docker进行PHP开发,连接sqlsrv 2008r2遇到的问题及解决过程。在尝试安装pdo_sqlsrv5.9和sqlsrv扩展失败后,改用namoshek/php-mssql镜像,解决了ssl协议不一致问题。最后,在CentOS7.5服务器上,通过yum安装msodbcsql、mssql-tools等,并手动编译安装pdo_sqlsrv和sqlsrv扩展,解决Segmentation fault错误,成功运行项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。本机是 mac m1 没有按照微软官方php连接方式下载扩展工具。开发一直使用的alpine3.13-php-fpm7.4 自建docker容器进行开发。使用yii框架,连接sqlsrv 2008r2。
按照微软官网文档安装pdo_sqlsrv5.9 sqlsrv odbc 支持 最终问题都会卡在容器上面,首先自建环境的 核心类库 以及 pecl 这些 gcc c++这些都需要自己安装,最终出现 扩展依赖 not found 但是依赖文件确实存在 lld .so依赖文件 只能看到 not sported type xx 之类的错误。无果之后考虑更换镜像不再使用alpine。
2。 后续找到 namoshek/php-mssql 镜像 这是基于官方php镜像生成的镜像(PHP 7.4(基于 Debian Buster)+ Microsoft ODBC 驱动程序 17 + sqlsrv + pdo_sqlsrv(FPM 和 CLI))。它是单独的php 镜像 并且支持了sqlsrv 没有支持mysql 需要自己启用容器 并通过官方指令 docker-php-ext-install 。 安装mysql一系列扩展。安装完毕后运行项目会提示ssl SSL routines:ssl_choose_client_version:unsupported protocol 错误,修改/etc/ssl/openssl.cnf 文件 将 MinProtocol = TLSv1.2 改为 1 即可 这是因为高版本系统使用了较高的ssl 协议连接低版本的sqlsrv服务时协议不一致导致的,通过降级ssl协议即可解决。

3。 通过docker-compose 拉起两个容器 一个nginx 一个上述php-fpm74 容器 将项目映射可以实现同时连接两个数据库。使用没有问题。
4。 测试服务器没有docker,本身是centos7.5 内核 需要自己扩展 pdo_sqlsrv\sqlsrv\odbc 。根据网上教程 yum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值