【问题标题】:Could not find driver sqlsrv PHP 8.0.1找不到驱动程序 sqlsrv PHP 8.0.1
【发布时间】:2021-04-17 15:15:50
【问题描述】:

我目前正在尝试启用 pdo_sqlsrv 扩展。

我从这里下载了驱动程序:https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15

然后将它们添加到文件夹 php/ext/

之后,我在 php.ini 中添加了以下行

extension=php_sqlsrv_72_ts.dll

错误日志显示以下内容:

[12-Jan-2021 16:06:23 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'php_sqlsrv_72_ts.dll' (tried: C:\php\ext\php_sqlsrv_72_ts.dll (Impossível localizar o módulo especificado), C:\php\ext\php_php_sqlsrv_72_ts.dll.dll (Impossível localizar o módulo especificado)) in Unknown on line 0

我已经尝试过也只是添加以下行:

extension=php_pdo_sqlsrv

错误日志文件显示:

[12-Jan-2021 16:17:55 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'php_pdo_sqlsrv' (tried: C:\php\ext\php_pdo_sqlsrv (Impossível localizar o módulo especificado), C:\php\ext\php_php_pdo_sqlsrv.dll (Impossível localizar o módulo especificado)) in Unknown on line 0

注意:我在 IIS 中使用 PHP。 pdo_odbc 等其他驱动程序也可以工作。我只有这个有问题。

根据 cmets 的建议:

我从以下链接安装了驱动程序:pecl.php.net/package/pdo_sqlsrv/5.9.0beta2/windows

添加到 php.ini

extension=pdo_sqlsrv

并且错误日志文件仍然显示找不到模块:

[12-Jan-2021 20:59:17 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlsrv' (tried: C:\php\ext\pdo_sqlsrv (Impossível localizar o módulo especificado), C:\php\ext\php_pdo_sqlsrv.dll (Impossível localizar o módulo especificado)) in Unknown on line 0

【问题讨论】:

  • 基于change log,您需要适用于SQL Server 的PHP 驱动程序,适用于PHP 8.0.1 的5.9 版文件php_sqlsrv_72_ts.dll 是PHP 7.2 的扩展DLL 文件
  • @Zhorov 我根据您的建议编辑了我的问题。非常感谢

标签: php sql-server iis sqlsrv


【解决方案1】:

根据我在 PHP 8 发布后看到的内容,pdo_sqlsrv 的 dll 扩展要到 1 月底才会发布。当 7.4 推出时我遇到了同样的问题,我不得不等待几个月才能为我们的 Windows 服务器发布适当的 dll。如果我发现它已发布,我会尽量记住回来更新链接。

【讨论】:

【解决方案2】:

我发现自己在安装 SQLSRV 驱动程序以使用 PHP 中的 PDO 并连接到我的 Microsoft SQLServer 服务器时遇到了类似的情况,在我的特殊情况下,我在本地安装了 XAMPP

要测试和检查我拥有的 PHP 版本并验证我的驱动程序是否可以工作,请使用以下命令:

创建 info.php 并在浏览器本地执行此文件

http://localhost/info.php.

重要的是,您必须将它放在 C:\xampp\htdocs 文件夹中,在我的情况下,我使用的是 XAMPP

<?php 
phpinfo(); 
?>

我有 PHP 8.0.3 版,在 PDO 部分中,您会找到 PDO 支持 PDO 驱动程序,如果一切顺利,您必须在那里找到激活的 sqlsrv,以及启用版本 5.9.0 的 pdo_sqlsrv 部分。

PDO Active Drivers Section 如果它们未显示在启用列中,则有问题

从以下位置下载 SQLSRV59.EXE Microsoft Drivers 5.9 for PHP for SQL Server is the latest general availability (GA) version

您将必须执行您下载的文件,然后在文件夹中复制与您需要的版本相对应的 .dll 文件

C:\xampp\php\ext

我复制下一个文件(我的 windows 是 x64 和 PHP 8.0.3)

php_pdo_sqlsrv_80_nts_x64.dll php_pdo_sqlsrv_80_ts_x64.dll php_sqlsrv_80_nts_x64.dll php_sqlsrv_80_ts_x64.dll

在此下载中,您将找到 .dll x86 和 x64

php_pdo_sqlsrv73 php_pdo_sqlsrv74 php_pdo_sqlsrv80

我安装了Microsoft SQL Management Studio 18,但如果不安装它,您将需要

Microsoft ODBC Driver 17 for SQL Server

在 XAMPP 控制面板窗口中搜索 Apache 模块的 CONFIG 按钮,然后选择 PHP (php.ini) 选项

添加此行(根据您在文件夹中复制的 .dll 文件的名称)

在 php.ini 中搜索 EXTENSIONS 部分

; Mi CONFIGURACIÓN SQL SERVER
extension=php_pdo_sqlsrv_80_nts_x64.dll
extension=php_pdo_sqlsrv_80_ts_x64.dll
extension=php_sqlsrv_80_nts_x64.dll
extension=php_sqlsrv_80_ts_x64.dll

保存文件并重新启动 apache 服务器。按下停止按钮,然后开始

希望对你有用

【讨论】:

    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 2022-05-18
    • 2022-11-02
    • 2018-03-02
    • 2016-09-11
    • 2017-02-13
    • 2018-02-22
    相关资源
    最近更新 更多