PHP警告PHP启动无法加载动态库PHP_pdo_sqlsrv_7_ts_x64.dll 操作系统:Windows 8.1 拱门:x64 php:PHP7.1.6 mssql:mssql Server 2014 express 驱动程序:sqlsrv4.0 IDE:PhpStorm

PHP警告PHP启动无法加载动态库PHP_pdo_sqlsrv_7_ts_x64.dll 操作系统:Windows 8.1 拱门:x64 php:PHP7.1.6 mssql:mssql Server 2014 express 驱动程序:sqlsrv4.0 IDE:PhpStorm,php,sql-server,pdo,Php,Sql Server,Pdo,我正在尝试让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_sq

我正在尝试让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版本是线程安全的吗?您正在使用此版本的库,您可以在windows中的命令行中使用
“php-i |查找“线程”

您的php版本是线程安全的吗?您正在使用此版本的库,您可以在windows中的命令行中使用
“php-i |查找“线程”

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


在我的例子中,mssql驱动程序仍然是php最新稳定版本的一个次要版本,因此我必须将我的php从7.1降级到7.0。

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

在我的例子中,mssql驱动程序仍然是php最新稳定版本之后的一个次要版本,因此我必须将我的php从7.1降级到7.0。

在我的例子中,此错误(但使用不同的DLL版本)是由于将错误的php SQL SLQSRV DLL添加到我的php扩展中造成的:

我使用的是来自XAMPP的PHP7.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扩展,但是ntsdll版本对于我的php版本是错误的。当我启用tsdll版本时,错误消失了。(我正在使用IIS。)

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

在我的例子中,此错误(但使用不同的DLL版本)是由于将错误的PHP SQL SLQSRV DLL添加到我的PHP扩展中造成的:

我使用的是来自XAMPP的PHP7.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扩展,但是ntsdll版本对于我的php版本是错误的。当我启用tsdll版本时,错误消失了。(我正在使用IIS。)

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


非常感谢。我的印象是线程安全是默认选项,但再看一遍,它只适用于使用Apache时。这很有帮助,但并没有解决我的问题。经过提问,看起来我还是需要线程安全。谢谢。我的印象是线程安全是默认选项,但再看一遍,它只适用于使用Apache时。这很有帮助,但这并没有解决我的问题。经过询问后,看起来我毕竟需要线程安全。如果你在使用IIS,你应该使用NTS如果你在使用IIS,你应该使用NTS