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

SqlSrv driver isn't loading with IIS 10 & 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=...', '', '')

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

[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

在我看来一切都是正确的,而且我之前在其他机器上也成功地做到了这一点。我觉得我错过了一些简单的东西。

其他一些注意事项:

值得注意的是,我安装 Xdebug 很好,它 出现在 phpinfo().

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

当我更改为 PHP 5.6 VC11 x86 Non Thread Safe 后,一切都变得更好了。

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

或者使用这个库:php_pdo_sqlsrv_73_nts.dll