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

时间:2017-06-27 15:22:04

标签: php sql-server pdo

  • 操作系统:Windows 8.1
  • Arch:x64
  • php:PHP 7.1.6
  • mssql:Mssql Server 2014 express
  • 驱动程序:SQLSRV 4.0
  • IDE:PhpStorm

我正在尝试让mssql驱动程序工作。 我从microsoft下载了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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

对于我来说,此错误(但具有不同的DLL版本)是由于向我的PHP扩展中添加了错误的PHP SQL SLQSRV DLL引起的:

我正在使用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)和非线程安全(TS)是两种不同的PHP   可用的版本。