PHP 未加载 sqlsrv 扩展

PHP 未加载 sqlsrv 扩展

我在运行 IIS 和 PHP 7.1.7 的 64 位 Windows Server 2012 R2 上让 PHP 使用 Microsoft 的sqlsrv扩展时遇到了麻烦。运行时phpinfo()我没有看到扩展已加载。我假设我应该查找sqlsrv扩展名。PHP 错误日志中也没有显示任何加载扩展失败的错误。

我下载了 Microsoft 驱动程序的 4.3 版本,该版本声称它们与 PHP 7.1 兼容。我已将 dll 文件复制到目录中PHP\v7.1\ext。我在 php.ini 文件中添加了以下几行。

extension=php_sqlsrv_7_nts_x64.dll
extension=php_pdo_sqlsrv_7_nts_x64.dll

我已经验证了我的 php.ini 文件正在被读取,通过故意拼错其中一个 dll 名称并在 php 日志中看到相应的错误。

已安装 SQL Server Native Client 10 和 11。

我已经回收了应用程序池,重新启动了 W3SVC 服务,并重新启动了服务器。

我希望这里有人可以提供一些其他的东西来尝试。

答案1

第一个问题我还没有解决,那就是我的 php 错误日志不显示扩展加载问题,除非我更改日志文件名。更改日志文件名后,我收到以下错误:

PHP 警告:PHP 启动:无法加载动态库“C:\Program Files\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll” - 找不到指定的过程。

事实证明,我需要使用特定于 PHP 7.1 的驱动程序。我不确定为什么,因为我最初的下载没有包含 7.1 驱动程序。也许我第一次错误地下载了 sqlsrv 4.0 驱动程序。我去这里下载了 sqlsrv 4.3 驱动程序:

https://www.microsoft.com/en-us/download/details.aspx?id=55642

我在 php.ini 中添加了以下内容

扩展=php_sqlsrv_71_nts_x64.dll
扩展=php_pdo_sqlsrv_71_nts_x64.dl

sqlsrv 扩展现已加载。我希望这能帮助其他人。

相关内容