首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
PHP环境安装SQL Server驱动sqlsrv详细教程

PHP环境安装SQL Server驱动sqlsrv详细教程

热心网友
78
转载
2026-05-07

phpEnv下安装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)。关键需确认输出中是否包含x64NTS标识。
  • 若显示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.dllphp_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=sqlsrv
    extension=pdo_sqlsrv
    ⚠️ 重要提示:此处仅需写入扩展名称,无需包含完整文件路径或.dll后缀,phpEnv环境会自动完成识别与加载。

必须安装系统级 ODBC 驱动(Windows)

此步骤至关重要却常被忽略。phpEnv自带的PHP运行时并不包含连接SQL Server数据库所需的底层ODBC驱动。因此,即便sqlsrv扩展加载成功,在尝试建立数据库连接时,仍可能遭遇诸如Named Pipes Provider: Could not open a connectionTCP 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 refusedServer 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/IPNamed Pipes两种协议均处于“已启用”状态。
  • 此外,在连接字符串中,除非您已明确禁用动态端口并指定了固定端口,否则建议避免硬编码端口号(如localhost,1433)。

最后,一个极易被忽视的要点是:phpEnv支持切换多个PHP版本,而每个版本都拥有独立的php.ini配置文件。您为A版本添加的扩展配置,对B版本完全无效。系统级ODBC驱动仅需安装一次,但sqlsrv扩展的DLL文件,需要为您计划使用的每一个PHP版本,分别放置一份到其对应的ext/扩展目录中。

来源:https://www.php.cn/faq/2423619.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

phpEnv启用GD库扩展教程 实现图片生成功能
编程语言
phpEnv启用GD库扩展教程 实现图片生成功能

phpEnv中GD扩展默认关闭,需手动启用。首先确认并修改正确的php ini文件,移除gd扩展前的分号。重启Web服务后,通过浏览器访问phpinfo()页面验证GD及各项图片格式支持是否启用。若函数报错,需将libpng等依赖DLL复制到PHP根目录,并注意不同PHP版本需单独配置。

热心网友
05.07
phpEnv自定义PHP配置教程 修改phpini文件详解
编程语言
phpEnv自定义PHP配置教程 修改phpini文件详解

phpEnv是一款第三方Shell脚本工具,用于在Linux或macOS上快速切换多个PHP版本。它不提供内置的配置管理功能,因此自定义php ini需要手动操作。首先通过运行对应版本的`php--ini`命令,找到“LoadedConfigurationFile”指向的配置文件路径,然后直接编辑该文件。修改后,命令行环境会立即生效,但Web环境需重启PHP

热心网友
05.07
PHP环境配置PDO_MySQL扩展编译安装与设置教程
数据库
PHP环境配置PDO_MySQL扩展编译安装与设置教程

在PHP中配置pdo_mysql扩展需先确认PHP安装方式。若为包管理器安装,直接安装对应包即可。若为源码编译且未启用该扩展,则需手动编译:进入源码ext pdo_mysql目录,使用正确的phpize、php-config和mysql_config路径执行编译安装。随后需确保php ini中extension_dir指向正确目录并添加extension=p

热心网友
05.07
PHP文件加密解密教程使用readfile函数实现安全操作
网络安全
PHP文件加密解密教程使用readfile函数实现安全操作

如何使用readfile函数进行文件的加密与解密 您是否正在寻找使用PHP的readfile函数实现文件加密与解密的可靠方法?核心原理在于读取文件数据,应用加密算法进行处理,然后安全地存储或还原。本文将详细讲解利用PHP文件函数结合加密技术来保护文件内容的完整流程与最佳实践。 首先,使用readfi

热心网友
05.07
VSCode安装PHP插件与配置环境教程
编程语言
VSCode安装PHP插件与配置环境教程

角色与核心任务 你是一位顶级的文章润色专家,擅长将AI生成的文本转化为具有个人风格的专业文章。现在,请对用户提供的文章进行“人性化重写”。 你的核心目标是:在不改动原文任何事实信息、核心观点、逻辑结构、章节标题和所有图片的前提下,彻底改变原文的AI表达腔调,使其读起来像是一位资深人类专家的作品。 特

热心网友
05.06

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

美国CLARITY法案最终版发布 全链网奖励机制细则正式出台
web3.0
美国CLARITY法案最终版发布 全链网奖励机制细则正式出台

《CLARITY法案》奖励机制文本公布,经协商达成折中:传统银行业获更多奖励限制,加密行业则确保美国用户仍可通过使用平台获得奖励,维护了用户参与和行业创新动力。此举有助于美国保持金融竞争力和国家安全利益。随着争议暂歇,法案将转向整体推进。

热心网友
05.07
Linux系统下Rust开发工具链安装与配置指南
编程语言
Linux系统下Rust开发工具链安装与配置指南

Linux 下的 Rust 工具链全景 想在 Linux 上愉快地写 Rust?一套趁手的工具链是关键。这份全景指南,帮你梳理从核心工具到开发辅助,再到环境配置的完整地图,让你快速上手,避开那些常见的“坑”。 一 核心工具链与用途 Rust 的工具链生态相当成熟,各司其职,共同构成了高效的工作流。

热心网友
05.07
Linux系统下Rust程序性能优化实用技巧指南
编程语言
Linux系统下Rust程序性能优化实用技巧指南

Rust 在 Linux 下的性能调优方法 想让你的 Rust 应用在 Linux 系统上飞起来?性能调优是个系统工程,从编译构建到系统层面,环环相扣。下面这份指南,将带你系统性地走完这个流程。 一 构建与编译优化 一切从构建开始。编译器的优化选项,是释放性能潜力的第一道闸门。 使用发布构建:这是基

热心网友
05.07
Linux下Rust网络编程入门与实践指南
编程语言
Linux下Rust网络编程入门与实践指南

在Linux中使用Rust进行网络编程 想在Linux环境下用Rust玩转网络编程?其实没那么复杂。跟着下面这几个清晰的步骤走,你就能快速搭建起一个可运行的基础框架。当然,这只是一个起点,Rust生态提供的工具远比这里展示的要强大。 1 安装Rust 万事开头先装环境。如果系统里还没有Rust,一

热心网友
05.07
Rust语言助力Linux系统跨平台开发与兼容性提升
编程语言
Rust语言助力Linux系统跨平台开发与兼容性提升

Rust为Linux系统带来跨平台能力的机制 想让同一套代码在Linux、Windows、macOS上都能顺畅运行?Rust给出的方案相当优雅。它通过一套统一的工具链、一个精心设计且可移植的标准库,再加上灵活的条件编译机制,让跨平台构建从理论变成了标准流程。更妙的是,基于LLVM的交叉编译体系和清晰

热心网友
05.07