我在运行 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 扩展现已加载。我希望这能帮助其他人。