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 驱动程序,我执行了以下操作:
- 已下载并安装 Microsoft ODBC Driver 11 for SQL Server (x64)
- 已下载并安装 Microsoft Driver for PHP for SQL Server (SQLSRV32.EXE)
- 在 PHP 管理器中启用扩展(
php_sqlsrv_56_nts.dll
和 php_sqlsrv_56_nts.dll
)
- 重新启动 IIS 服务器
[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
在我看来一切都是正确的,而且我之前在其他机器上也成功地做到了这一点。我觉得我错过了一些简单的东西。
其他一些注意事项:
- PHP 错误日志为空。
- 我已经尝试加载我下载的所有其他 dll 文件(例如针对 5.5、5.4 等的文件),但它没有任何改变。
值得注意的是,我安装 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
我在新的 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 驱动程序,我执行了以下操作:
- 已下载并安装 Microsoft ODBC Driver 11 for SQL Server (x64)
- 已下载并安装 Microsoft Driver for PHP for SQL Server (SQLSRV32.EXE)
- 在 PHP 管理器中启用扩展(
php_sqlsrv_56_nts.dll
和php_sqlsrv_56_nts.dll
) - 重新启动 IIS 服务器
[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
在我看来一切都是正确的,而且我之前在其他机器上也成功地做到了这一点。我觉得我错过了一些简单的东西。
其他一些注意事项:
- PHP 错误日志为空。
- 我已经尝试加载我下载的所有其他 dll 文件(例如针对 5.5、5.4 等的文件),但它没有任何改变。
值得注意的是,我安装 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