PHP环境安装SQL Server驱动sqlsrv详细教程
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/扩展目录中。
相关攻略
phpEnv中GD扩展默认关闭,需手动启用。首先确认并修改正确的php ini文件,移除gd扩展前的分号。重启Web服务后,通过浏览器访问phpinfo()页面验证GD及各项图片格式支持是否启用。若函数报错,需将libpng等依赖DLL复制到PHP根目录,并注意不同PHP版本需单独配置。
phpEnv是一款第三方Shell脚本工具,用于在Linux或macOS上快速切换多个PHP版本。它不提供内置的配置管理功能,因此自定义php ini需要手动操作。首先通过运行对应版本的`php--ini`命令,找到“LoadedConfigurationFile”指向的配置文件路径,然后直接编辑该文件。修改后,命令行环境会立即生效,但Web环境需重启PHP
在PHP中配置pdo_mysql扩展需先确认PHP安装方式。若为包管理器安装,直接安装对应包即可。若为源码编译且未启用该扩展,则需手动编译:进入源码ext pdo_mysql目录,使用正确的phpize、php-config和mysql_config路径执行编译安装。随后需确保php ini中extension_dir指向正确目录并添加extension=p
如何使用readfile函数进行文件的加密与解密 您是否正在寻找使用PHP的readfile函数实现文件加密与解密的可靠方法?核心原理在于读取文件数据,应用加密算法进行处理,然后安全地存储或还原。本文将详细讲解利用PHP文件函数结合加密技术来保护文件内容的完整流程与最佳实践。 首先,使用readfi
角色与核心任务 你是一位顶级的文章润色专家,擅长将AI生成的文本转化为具有个人风格的专业文章。现在,请对用户提供的文章进行“人性化重写”。 你的核心目标是:在不改动原文任何事实信息、核心观点、逻辑结构、章节标题和所有图片的前提下,彻底改变原文的AI表达腔调,使其读起来像是一位资深人类专家的作品。 特
热门专题
热门推荐
《CLARITY法案》奖励机制文本公布,经协商达成折中:传统银行业获更多奖励限制,加密行业则确保美国用户仍可通过使用平台获得奖励,维护了用户参与和行业创新动力。此举有助于美国保持金融竞争力和国家安全利益。随着争议暂歇,法案将转向整体推进。
Linux 下的 Rust 工具链全景 想在 Linux 上愉快地写 Rust?一套趁手的工具链是关键。这份全景指南,帮你梳理从核心工具到开发辅助,再到环境配置的完整地图,让你快速上手,避开那些常见的“坑”。 一 核心工具链与用途 Rust 的工具链生态相当成熟,各司其职,共同构成了高效的工作流。
Rust 在 Linux 下的性能调优方法 想让你的 Rust 应用在 Linux 系统上飞起来?性能调优是个系统工程,从编译构建到系统层面,环环相扣。下面这份指南,将带你系统性地走完这个流程。 一 构建与编译优化 一切从构建开始。编译器的优化选项,是释放性能潜力的第一道闸门。 使用发布构建:这是基
在Linux中使用Rust进行网络编程 想在Linux环境下用Rust玩转网络编程?其实没那么复杂。跟着下面这几个清晰的步骤走,你就能快速搭建起一个可运行的基础框架。当然,这只是一个起点,Rust生态提供的工具远比这里展示的要强大。 1 安装Rust 万事开头先装环境。如果系统里还没有Rust,一
Rust为Linux系统带来跨平台能力的机制 想让同一套代码在Linux、Windows、macOS上都能顺畅运行?Rust给出的方案相当优雅。它通过一套统一的工具链、一个精心设计且可移植的标准库,再加上灵活的条件编译机制,让跨平台构建从理论变成了标准流程。更妙的是,基于LLVM的交叉编译体系和清晰





