SqlSrv 驱动程序未随 IIS 10 和 PHP 5.6 一起加载

Row*_*man 0 iis sqlsrv php-5.6

我已经在新的 Windows 10 计算机上安装了新的 IIS 10 服务器,并使用PHP 5.6.31 VC11 x64 非线程安全(尚不能使用 PHP7)。PHP 现在运行良好并且phpinfo()可以正确显示所有内容。

我刚刚安装了 PHP SQL 驱动程序,但尚未加载它。它没有显示出来phpinfo(),当我尝试在代码中使用它时,出现以下 PHP 错误:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'could not find driver' in test.php:3
Stack trace:
#0 test.php(3): PDO->__construct('sqlsrv:server=...', '', '')
Run Code Online (Sandbox Code Playgroud)

为了安装 PHP SQL 驱动程序,我执行了以下操作:

PHP 扩展

[PHP_XDEBUG-2.5.5-5.6-VC11-NTS-X86_64]
extension=php_xdebug-2.5.5-5.6-vc11-nts-x86_64.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_SQLSRV_56_NTS]
extension=php_sqlsrv_56_nts.dll
[PHP_SQLSRV_56_NTS]
extension=php_sqlsrv_56_nts.dll
Run Code Online (Sandbox Code Playgroud)

对我来说这一切看起来都是正确的,并且我之前已经在其他机器上成功完成了此操作。我觉得我错过了一些简单的东西。

其他一些注意事项:

  • PHP 错误日志为空。
  • 我尝试加载我下载的所有其他 dll 文件(例如针对 5.5、5.4 等的文件),但它没有改变任何内容。

值得注意的是,我安装了 Xdebug,并且它显示phpinfo().

Row*_*man 5

我通过使用 x86 而不是 x64 的 PHP 解决了这个问题。我猜测 SQL 驱动程序不是为 x64 设计的(尽管我在任何地方都看不到这一点)。

当我更改为PHP 5.6 VC11 x86 非线程安全后,一切都工作得更好。

请注意,您需要Visual C++ Redistributable for Visual Studio 2012 x86 才能正常工作。如果您已经安装了 x64 可再发行组件,则需要安装专为 x86 设计的版本。