致命错误:未捕获错误:调用未定义的函数 sqlsrv_connect()

2023-12-04

我正在尝试连接到我们可以通过“Microsoft SQL Server Management Studio”访问的 SQL Server:

enter image description here

我已经尝试了很多我在 SO 上看到的不同的东西,但没有任何效果。我收到错误Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\Apache24\htdocs\test.php:52 Stack trace: #0 {main} thrown in C:\Apache24\htdocs\test.php on line 52当运行以下代码时test.php page:

$serverName = "SERVER.DOMAIN.COM, 1433"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"DB_NAME", "UID"=>"USER", "PWD"=>"PASS");
$ma_conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $ma_conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}

我的 php.ini 文件已启用许多不同的扩展,但没有一个起作用。我已经尝试了以下所有方法:

extension = php_sqlsrv_56_ts.dll
extension=php_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_nts.dll
extension=php_sqlsrv_55_ts.dll
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll

目前我有:

extension_dir = "c:\apache24\php7\ext\"
extension=php_pdo.dll
extension=php_pgsql.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll

在 CMD 中使用 Apache 和 PHP 的机器上,我得到以下信息:

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Windows\system32>php -c c:\apache24\php7\php.ini -v -display_startup_errors=1

PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_pdo.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0 PHP
Warning:  PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_pdo_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0
PHP 7.0.10 (cli) (built: Aug 18 2016 09:48:53) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

C:\Windows\system32>

我也下载并运行SQLSRV32.EXE里面的C:\Apache24\php7\ext folder.

I have:

  • Windows Server 2012 RS win64
  • 阿帕奇 2.4.23 win64
  • PHP 7.0.10 win64
  • Microsoft SQL Server 2012 本机客户端 win64
  • Microsoft Visual C++ 2012 x64 和 x86 可再发行组件(两种不同)
  • Microsoft Visual C++ 2015 可再发行组件(x64 和 x86)- 14.0.23026
  • 适用于 SQL Server 的 Microsoft ODBC 驱动程序 11

enter image description here

enter image description here


符合 php.ini 中的尝试列表(php_sqlsrv_XX_ts.dll),您已激活 PHP v5.5 和 v5.6 的扩展。但是,由于您运行的是 PHP 7.0,因此您需要下载并激活相应的适用于 SQL Server 的 PHP 的 Microsoft 驱动程序。看来你需要下载驱动版本4.0。这是在SQLSRV 扩展的 php.net 页面.

SQLSRV 扩展受 Microsoft 支持,可用于 在这里下载:http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx.

您可以在这里找到相关说明加载 PHP SQL 驱动程序。您可能会收到类似的文件php_sqlsrv_7_XX.dll with XX:“ts”或“nts”(线程安全或非线程安全)。我认为你需要线程安全版本。

否则,使用MS SQL 服务器 (PDO)PDO 驱动程序(阅读链接中的“安装”部分!)PDO_SQLSRV DSN(连接字符串)和PDO一般功能,例如所有驾驶员共有。该驱动程序将添加到 php.ini 中,如下所示extension=php_pdo_sqlsrv_7_ts.dll然后(查看同一页面的说明:加载 PHP SQL 驱动程序)。如果你问我,我真的会选择这个选项。

诺塔·贝尼:每次更改配置后,不要忘记重新启动 Web 服务器和/或数据库服务!

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

致命错误:未捕获错误:调用未定义的函数 sqlsrv_connect() 的相关文章

随机推荐

  • 在 R 中使用 osmplotr 和 OpenStreetmap 绘制海域

    我正在尝试使用 Openstreetmap 通过osmplotrCRAN 上的软件包 绘制海岸线并将大海涂成蓝色 因为大海不是多边形 所以我尝试使用osm line2poly 将线条变成多边形 然而 下面的最小可重现示例给出了以下错误 Er
  • 使用 hbase 处理图像、视频和音频类型

    任何人都知道如何使用 Hbase 处理音频 视频和图像等非结构化数据 我尝试了很多 但没有任何想法 请提供任何帮助 选项1 将图像转换为字节数组 您可以准备放置请求并插入到表中 同样也可以实现音频和视频文件 See https docs o
  • C语言中的对象

    即使我浏览了一些 C 语言教程 笔记 我还是遇到了 对象 这个术语 我一直想知道对象与过程语言有什么关系 深入一点我可以理解 占用一块内存的东西在c中被称为 对象 我的问题是我的理解是否正确或者是否有我遗漏的东西 谢谢 来自C99标准草案
  • 如何存储/检索 RSA 公钥/私钥

    我想使用RSA公钥加密 存储或检索私钥和公钥的最佳方法是什么 XML 在这里是个好主意吗 如何获得钥匙 RSAParameters privateKey RSA ExportParameters true RSAParameters pub
  • ExpressJS:每 24 小时运行一次函数

    在 ExpressJS 中每 24 小时运行一次自动化函数的最简单方法是什么 除了运行无限循环之外 我到处寻找解决方案 原则上这是唯一的方法吗 你需要使用节点 cron npm var cron require node cron cron
  • 为什么 Ruby `**` 运算符的优先级高于一元 `-` ?

    这会导致这样的情况 1 0 5 gt 1 只有括号可以解决这个问题 1 0 5 gt 6 123031769111886e 17 1 0i 这比预期的要差1 i 但基本可以接受 在我去抱怨 Ruby bug 之前 我想知道是否有某种原因造成
  • 有没有办法提高FlyingSaucer的性能?

    我已经关注了本文使用 FlyingSaucer 将 XHTML 转换为 PDF 这很出色 但有一个重大缺点 速度慢得离谱 我发现从 XHTML 渲染 PDF 需要 1 到 2 分钟 无论该页面多么简单 基本代码 import java io
  • VBscript 代码捕获标准输出,而不显示控制台窗口

    这是一个 VBScript 代码示例 展示了如何捕获命令行程序发送到标准输出的任何内容 它执行命令xcopy 并在消息框中显示输出 在消息框出现之前 您会看到控制台窗口突然弹出 Set objShell WScript CreateObje
  • 使用指针了解数组的大小

    我如何使用使用 malloc 分配的指针知道数组的大小 include
  • Java:从字节数组中删除连续的零段

    例如 假设我想从数组中删除所有长度超过 3 个字节的连续 0 段 byte a 1 2 3 0 1 2 3 0 0 0 0 4 byte r magic a System out println r result 1 2 3 0 1 2 3
  • .NET 最好的音频压缩库是什么?

    我正在寻找一个好的 NET 音频压缩库 任何使用 MP3 的东西都已经过时了 因为许可问题 基本上我只需要能够将常规 WAV 音频数据压缩为某种格式 然后解压缩回 WAV 最好代码全部是 NET C 或 VB NET 但我认为这不太可能 它
  • 用于从 Google 表单获取平均分数和电子邮件的 Google 脚本(如测验)

    我需要一个 Google 脚本 GAS 来从已转换为测验的 Google 表单中检索电子邮件和总分 在GAS中你可以得到每个问题的分数 但我需要得到所有问题的分数 然后平均得出最终分数 每个测验有20个问题 我还需要每个完成测验的人的电子邮
  • R - ggplot 轴数字格式 - 删除前导零

    从 R ggplot geom bar 轴删除前导零的选项 代码是什么 即 我希望 0 05 显示为 0 05 我能找到的只是内置格式 如百分比 逗号等 thx 作为受 m evans 给出的答案启发的简单替代方案 可以使用以下方法轻松实现
  • 使用 Dataview.RowFilter 从 SomeTable 中选择 TOP 5 *?

    我需要从缓存的 Dataview 对象中选择最近的 5 行 有什么方法可以做到这一点吗 我已经尝试过 但索引器数据列是空的 public static DataView getLatestFourActive DataTable produ
  • 委托的构造函数和成员函数在哪里定义?

    当我在看的时候ActionReflector 中的委托 我看到它有一个像这样的构造函数 public Action object object IntPtr method 但我找不到任何机构以及其他成员职能 例如Invoke BeginIn
  • MYSQLI准备语句bind_param类型不起作用

    我已经使用准备好的插入语句好几年了 并假设它正确绑定了参数 否则会给出错误 但它似乎不像以下 php 绑定并插入记录而没有任何错误 而是将应该是 int 的字符串更改为零 因此 它可能可以防止 SQL 注入攻击 但最终会在表中得到虚假记录
  • Monotouch:在 iPhone 上关闭飞行模式后 WebRequest 连接失败

    我的单点触控应用程序正在与网络服务进行定期后台同步 它运行完美并正确检测飞行模式 当我关闭 WiFi 时 它会自动开始使用 WWAN GPRS 3G 连接 到目前为止 我非常满意 但是 关闭飞行模式后 当没有可用的 WiFi 时 我的应用程
  • 类型错误:列表索引必须是整数,而不是 str Python [重复]

    这个问题在这里已经有答案了 list s 是一个字符串 为什么这不起作用 出现以下错误 类型错误 列表索引必须是整数 而不是 str list abc def map list for s in list t list s 1 map li
  • 如果数组包含值,Mongoose 查找文档

    所以我有这个模式 const Document new mongoose Schema id type Number creationDate type Date default Date now title String status t
  • 致命错误:未捕获错误:调用未定义的函数 sqlsrv_connect()

    我正在尝试连接到我们可以通过 Microsoft SQL Server Management Studio 访问的 SQL Server 我已经尝试了很多我在 SO 上看到的不同的东西 但没有任何效果 我收到错误Fatal error Un