PHP 警告 PHP 启动无法加载动态库 php_pdo_sqlsrv_7_ts_x64.dll

rms*_*ers 5 php sql-server pdo

  • 操作系统:Windows 8.1
  • 拱形:x64
  • PHP:PHP 7.1.6
  • mssql:Mssql Server 2014 Express
  • 驱动程序:SQLSRV 4.0
  • IDE:PhpStorm

我正在尝试让 mssql 驱动程序工作。我从微软下载了pdo驱动程序,将文件放入php_pdo_sqlsrv_7_nts_x64.dllC:\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
Run Code Online (Sandbox Code Playgroud)

可能与此重复: PHP 警告:PHP 启动:无法加载动态库 php_pdo_mssql.dll

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

jas*_*sie 5

就我而言,此错误(但具有不同的 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.dllPHP 扩展,但nts dll 版本不适合我的 PHP 版本。当我启用ts dll 版本时,错误消失了。(我正在使用 IIS。)

线程安全 (TS) 和非线程安全 (NTS) 是两种不同的 PHP 版本。


rms*_*ers 2

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

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

就我而言,mssql 驱动程序仍然是 php 最新稳定版本之后的一个小版本,因此我必须将 php 从 7.1 降级到 7.0。