Windows Server 2012 r2 + XAMPP + SqlSrv = 到目前为止不成功

Windows Server 2012 r2 + XAMPP + SqlSrv = unsuccessful so far

我有一个 Windows 2012 R2 服务器,安装了 XAMPP。我需要连接到 Microsoft SQL 服务器数据库,但我看到不再支持 mssql-library,我被重定向到 official Microsoft package SqlSrv.

我已将所有文件解压缩到 d:\xampp\php\ext 并在 php.ini.

中添加了 extension=php_pdo_sqlsrv_56_nts.dll

使用 XAMPP 的控制面板我重新启动了 Apache,但它没有用。我总是收到错误消息:

[20-Apr-2015 08:38:08 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\xampp\php\ext\php_pdo_sqlsrv_56_nts.dll' - The specified module could not be found.

 in Unknown on line 0

[20-Apr-2015 08:38:08 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\xampp\php\ext\php_pdo_sqlsrv_56_nts.dll' - The specified module could not be found.

 in Unknown on line 0

我检查了几次以确保文件名正确。该文件真实存在。所有系统用户都可以完全控制该文件(与此相关的 \ext 目录中的任何文件)。切换到 tsnon-pdo 变体也没有关系。

我是 运行 PHP 5.6.3。有什么建议么?我没有想法寻找问题...

更新 1: 通过几个表单帖子,我遇到了要安装的 C++ Redistributable,所以我已经涵盖了它。但我仍然错过了一些 DLL,根据 depends.exe (Dependency Walker).

到目前为止,我缺少以下 DLL:

我想它们是我丢失的包裹的一部分。我还看到了一些关于安装最新的 SQL Server Native Client 的帖子。但据我所知,最新版本是 11,但对于 Windows 2012R2 来说太旧了。

更新二:this forum page 上,我看到一个有用的反应(德语)告诉 SqlSrv 不能使用最新的 XAMPP PHP 版本。所以我现在用 PHP 5.5.19 重新安装了 XAMPP,但这仍然没有帮助。

如何进行?

好的,我发现问题了。

此刻我在 Windows 2012R2 机器上成功地 运行ning SqlSrv XAMPP。主要问题是我使用的是 *nts.dll 文件。使用 Dependency Walker 我能够获得未成功加载的 dll 列表。其中列出的 DLL 之一是 php5.dll。我花了一段时间才发现这很奇怪。我检查了我的 php 文件夹,我在里面看到了文件 php5ts.dll,但没有 php5.dll,所以我用 Google 搜索了 sqlsrv php5.dll,然后我遇到了 this page from Microsoft

该页面列出了 PHP 的哪些驱动程序与哪些 DLL 一起工作。我已将模块从 nts 切换到 ts,现在一切正常。此时我还安装了 C++ 可再发行组件来修复 MSVCP110.dll 问题,但我不确定这是否是让它工作所必需的。如果你 运行 遇到同样的问题,也许你还必须安装这个补丁(Microsoft downloadpage,我已经下载 VSU_4\vcredist_x86.exe

祝未来的解决方案寻求者好运!