【问题标题】:SqlSrv driver isn't loading with IIS 10 & PHP 5.6SqlSrv 驱动程序未使用 IIS 10 和 PHP 5.6 加载
【发布时间】:2017-08-01 00:17:25
【问题描述】:

我已经在带有PHP 5.6.31 VC11 x64 Non Thread Safe 的新 Windows 10 机器上安装了新的 IIS 10 服务器(目前还不能使用 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

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

其他几点说明:

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

值得注意的是,我很好地安装了 Xdebug,它正在显示在 phpinfo()

【问题讨论】:

    标签: iis php-5.6 sqlsrv


    【解决方案1】:

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

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

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

    【讨论】:

    • 适用于 PHP 7 的 SQL Server 驱动程序支持 x64。
    • 已知 PHP 5.6 与 x64 存在多个问题。如果确实需要 64 位支持,则应考虑 7.x。
    【解决方案2】:

    或者使用这个库:php_pdo_sqlsrv_73_nts.dll

    【讨论】:

    • 为什么安装 7.3 版会修复 5.6 版中的问题?
    猜你喜欢
    • 2018-02-22
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 2018-03-02
    • 2014-03-19
    • 2016-12-02
    相关资源
    最近更新 更多