PHP环境安装SQL Server驱动sqlsrv详细教程
在phpEnv中安装SQLServer驱动需确保扩展文件、PHP运行时与系统ODBC驱动三者匹配。首先确认PHP架构与线程模型,下载对应版本的sqlsrv扩展DLL并放入ext目录,在php ini中启用。Windows系统必须额外安装ODBCDriver18。连接测试时建议使用localhost,并检查SQLServer网络协议是否启用。注意为每个PHP版
phpEnv下安装SQL Server驱动(sqlsrv)实战指南

在phpEnv环境中配置sqlsrv扩展失败,绝大多数情况源于“三位一体”的版本匹配问题:扩展文件、PHP运行时环境以及系统ODBC驱动三者未能精确对齐。核心难点通常不在于文件下载,而在于版本、架构与线程模型的精准匹配。
确认 phpEnv 的 PHP 架构和线程模型
首要步骤是精确诊断当前PHP环境的“体质”。phpEnv默认集成的PHP版本多为NTS(非线程安全)和x64架构,但若您使用的是旧版或自定义安装包,则可能为TS(线程安全)或x86架构。一旦错配,php_sqlsrv_*.dll扩展将无法加载,且php -m命令可能无报错,使用extension_loaded('sqlsrv')检测也仅返回false,排查困难。
- 打开命令行终端,执行
php -v确认PHP具体版本号(例如8.1.22)。 - 接着,执行
php -i | findstr "Architecture Thread"(Windows)或php -i | grep -E "(Architecture|Thread)"(Linux/macOS)。关键需确认输出中是否包含x64和NTS标识。 - 若显示
TS,则必须选用带_ts.dll后缀的扩展文件;若显示x86,则严禁使用带_x64后缀的DLL文件。
下载并启用正确的 sqlsrv 扩展 DLL
微软官方已不再为phpEnv等集成环境提供独立扩展包,因此需手动前往官网精准匹配下载。截至2026年,最新的稳定版本为SQLSRV 5.11,兼容PHP 8.0至8.3。
- 访问微软官方PHP驱动下载页面,根据您的PHP版本、架构(x64/x86)、线程模型(NTS/TS)筛选并下载完全匹配的压缩包,例如
php_sqlsrv_81_nts_x64.zip。 - 解压下载的ZIP文件,将其中的
php_sqlsrv_81_nts_x64.dll和php_pdo_sqlsrv_81_nts_x64.dll两个核心文件,复制到phpEnv对应PHP版本的ext/扩展目录下(路径示例:phpenv/php/php-8.1.22/ext/)。 - 随后,编辑该PHP版本目录下的
php.ini配置文件(通常位于phpenv/php/php-8.1.22/conf/php.ini),在文件末尾添加以下两行配置指令:extension=sqlsrvextension=pdo_sqlsrv
⚠️ 重要提示:此处仅需写入扩展名称,无需包含完整文件路径或.dll后缀,phpEnv环境会自动完成识别与加载。
必须安装系统级 ODBC 驱动(Windows)
此步骤至关重要却常被忽略。phpEnv自带的PHP运行时并不包含连接SQL Server数据库所需的底层ODBC驱动。因此,即便sqlsrv扩展加载成功,在尝试建立数据库连接时,仍可能遭遇诸如Named Pipes Provider: Could not open a connection或TCP Provider: Error code 0x2746等连接错误。
立即学习“PHP免费学习笔记(深入)”;
- 前往微软官网,下载并安装“ODBC Driver 18 for SQL Server”的安装程序(.msi格式文件)。
- 运行安装程序,建议使用默认安装路径,安装完成后通常无需重启操作系统。安装成功后,可验证
C:\Windows\System32\msodbcsql18.dll文件是否存在。 - 安装验证:在命令行中执行
odbcad32命令打开ODBC数据源管理器,切换至“驱动程序”标签页,确认列表中已存在ODBC Driver 18 for SQL Server驱动项。
连接测试时 localhost 比 127.0.0.1 更可靠
进行最终连接测试时,细节处理尤为关键。SQL Server默认启用了命名管道(Named Pipes)连接方式。在phpEnv环境下,PHP有时可能因TCP/IP协议未启用或被防火墙策略拦截,导致使用127.0.0.1IP地址连接时被拒绝,错误信息可能为Connection refused或Server is not found or not accessible。
- 一个更为稳妥的连接策略是使用
localhost主机名替代IP地址进行连接尝试:$conn = sqlsrv_connect('localhost', ['Database' => 'testdb', 'Uid' => 'sa', 'PWD' => 'xxx']); - 若使用
localhost依然连接失败,可打开“SQL Server配置管理器”,依次展开“SQL Server网络配置”,定位到您的SQL Server实例协议,确保TCP/IP和Named Pipes两种协议均处于“已启用”状态。 - 此外,在连接字符串中,除非您已明确禁用动态端口并指定了固定端口,否则建议避免硬编码端口号(如
localhost,1433)。
最后,一个极易被忽视的要点是:phpEnv支持切换多个PHP版本,而每个版本都拥有独立的php.ini配置文件。您为A版本添加的扩展配置,对B版本完全无效。系统级ODBC驱动仅需安装一次,但sqlsrv扩展的DLL文件,需要为您计划使用的每一个PHP版本,分别放置一份到其对应的ext/扩展目录中。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Kafka与CentOS其他服务协同配置指南
Kafka在CentOS生态中作为数据流通中枢,与EFK日志收集、HDFS存储、HBase、Prometheus+Grafana监控及SparkStreaming流处理系统协同,通过生产者-消费者模式构建实时数据管道,实现解耦、削峰填谷与高效集成。
如何使用deluser命令重命名用户的详细操作指南
在Linux系统管理中,重命名用户需通过删除旧用户并创建新用户实现。操作包括备份数据、用rsync迁移文件、更改文件所有权、删除旧用户及家目录,最后重新登录验证。不同发行版命令略有差异,建议在测试环境演练。
详细CentOS系统中C++配置常见问题及解决方法大全
CentOS配置C++常见问题包括编译器缺失或版本过旧、环境变量错误、依赖库开发包未装、多版本冲突、权限路径问题、内存不足及内核参数不当。需正确安装gcc-c++及devel包,配置PATH与库路径,使用devtoolset或alternatives管理版本,调整权限与ulimit、sysctl参数。
CentOS C++环境变量配置方法
在CentOS系统配置C++编译器需设置路径和动态库路径。先验证g++是否已安装,否则使用sudoyuminstallgcc-c++安装。通过whichg++找到安装路径后,在~ bashrc中添加exportPATH=$PATH:该路径并执行source使之生效。动态库路径可用find命令查找后类似加入LD_LIBRARY_PATH。最后用g++编译测试
CentOS中C++配置文件位置与路径完整说明
CentOS中C++配置文件包括系统级全局配置( etc profile、 etc bashrc)影响所有用户,用户级配置(~ bashrc)仅影响当前用户,以及第三方库路径和构建工具CMakeLists txt。这些文件共同设置环境变量、库路径及编译选项等详细参数,用于管理相关开发环境。
- 热门数据榜
相关攻略
2026-07-12 06:52
2026-07-12 06:52
2026-07-12 06:52
2026-07-12 06:52
2026-07-12 06:52
2026-07-12 06:51
2026-07-12 06:51
2026-07-12 06:51
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

