【问题标题】:PHP Warning PHP Startup Unable to load dynamic library php_pdo_sqlsrv_7_ts_x64.dllPHP 警告 PHP 启动无法加载动态库 php_pdo_sqlsrv_7_ts_x64.dll
【发布时间】:2017-11-30 17:35:28
【问题描述】:
  • 操作系统:Windows 8.1
  • 架构:x64
  • php:PHP 7.1.6
  • mssql:Mssql Server 2014 快递
  • 驱动程序:SQLSRV 4.0
  • IDE:PhpStorm

我正在尝试让 mssql 驱动程序正常工作。 我从微软下载了pdo驱动,将文件php_pdo_sqlsrv_7_nts_x64.dll放入C:\Program Files\PHP\ext并编辑php.ini添加extension=php_pdo_sqlsrv_7_nts_x64.dll

这是结果:

$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\Program Files\PHP\ext\php_pdo_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
 in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\PHP\ext\php_sqlsrv_7_nts_x64.dll.dll' - The specified procedure could not be found.
 in Unknown on line 0
PHP 7.1.6 (cli) (built: Jun  8 2017 01:53:41) ( ZTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

可能与此重复: PHP Warning: PHP Startup: Unable to load dynamic library php_pdo_mssql.dll

但那个人从来没有回答过,已经四岁了。

【问题讨论】:

    标签: php sql-server pdo


    【解决方案1】:

    在我的情况下,这个错误(但使用不同的 DLL 版本)是由于将错误的 PHP SQL SLQSRV DLL 添加到我的 PHP 扩展中引起的:

    我正在使用来自 XAMPP 的 PHP 7.2.21。

    我添加了这些 DLL(包含在 SQLSRV561.exe 中):

    • php_pdo_sqlsrv_72_ts_x64.dll
    • php_pdo_sqlsrv_72_ts_x86.dll
    • php_pdo_sqlsrv_72_nts_x64.dll
    • php_pdo_sqlsrv_72_nts_x86.dll

    我启用php_pdo_sqlsrv_72_nts_x64.dll 作为 PHP 扩展,但 nts dll 版本与我的 PHP 版本不匹配。当我启用 ts dll 版本时,错误消失了。 (我正在使用 IIS。)

    线程安全 (TS) 和非线程安全 (NTS) 是两种不同的 PHP 可用的构建。

    【讨论】:

    • 如果你使用 IIS,你应该使用 NTS
    【解决方案2】:

    查看发布信息是个好主意。
    这样你就可以看到它支持的版本。

    https://github.com/Microsoft/msphpsql/releases

    在我的情况下,mssql 驱动程序仍然是 php 最新稳定版本的一个次要版本,所以我必须将我的 php 从 7.1 降级到 7.0。

    【讨论】:

      【解决方案3】:

      您的 PHP 版本是线程安全的吗?您正在使用此版本的库,您可以在 windows 的命令行中使用 "php -i|find "Thread"

      【讨论】:

      • 谢谢。我的印象是线程安全是默认选项,但再看一遍,它仅适用于使用 Apache 时。这很有帮助,但这并没有解决我的问题。
      • 经过询问,看来我毕竟需要线程安全。
      【解决方案4】:

      我使用 php_pdo_sqlsrv_73_nts_x64.dll 在 Windows Server 2019 和 IIS10 上使用 PHP732 进行了尝试,没有问题。如果我启用 73_ts_x64,它会发出警告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-27
        相关资源
        最近更新 更多