【问题标题】:PDO sqlsrv: could not find driverPDO sqlsrv: 找不到驱动程序
【发布时间】:2022-05-18 17:03:19
【问题描述】:

我试图连接到 PHP 中的 SQL Server。在我的本地机器上使用 XAMPP,一切正常。但现在我要把我的应用程序带到生产服务器上。

在此服务器上安装了 Microsoft IIS 6.1 并运行 PHP 版本 7.0.7。我还从here 安装了 ODBC 驱动程序。接下来,我在我的 php.ini 文件中取消注释以下行:

extension=php_sqlsrv_7_nts.dll
extension=php_pdo_sqlsrv_7_nts.dll

我从official microsoft site 得到了文件。

我的问题是什么?

不幸的是,在我重新启动 IIS 之后。 PDO 函数抛出 PDOException 错误并显示以下消息:

could not find driver

对于连接,我使用以下函数,它在我的本地机器上运行良好:

try {
    $con = new PDO("sqlsrv:Server=" . SERVER . ";Database=" . DATABASE, USERNAME, PASSWORD);
    // set the PDO error mode to exception
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "No connection: " . $e->getMessage();
    exit;
}

我还能做什么?

【问题讨论】:

  • 你的服务器有 Microsoft Visual C++ 2015 Redistributable 吗?
  • @Eimsas 是的。它有。
  • 然后尝试检查日志,它应该有比“找不到驱动程序”更多的信息我在 WAMP 上遇到了同样的问题,但后来我只是安装了 MS c++ 并尝试了几个版本的 php_sqlsrv。还需要重新启动,至少在 wamp 中。

标签: php sql-server sql-server-2008 pdo


【解决方案1】:

如果对某人有帮助,这里是详细过程。 PHP Version - 7.4

  1. 从此链接下载并提取.dll文件-https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15

  2. 将文件粘贴到C: mppphpext,你的路径可能不同。

  3. php.ini 在底部或扩展部分添加这两行。

     extension=php_sqlsrv_74_ts_x64.dll
     extension=php_pdo_sqlsrv_74_ts_x64.dll
    
  4. 重新启动您的 Xampp 服务器,我建议您重新启动您的计算机,然后一切都会正常运行。

    检查是否启用了 SqlSRV

    像这样使用 phpinfo() 或 http://localhost/dashboard/phpinfo.php 检查 -

    希望,它会帮助别人。

【讨论】:

    【解决方案2】:

    在Windows Server上找到错误日志后,我自己解决了这个错误。

    我的日志中出现此错误:

    [21-Apr-2017 07:12:14 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '...extphp_pdo_sqlsrv_7_nts.dll' - %1 is not a valid Win32 application. in Unknown on line 0
    

    然后我再次下载了 driver 并安装了 x64-Driver。最后它没有任何问题。

    【讨论】:

    • 希望描述更多如何安装它们?在重新启动 iis 之后,我只是将 dll 下载并复制到名为 php 版本的 php 文件夹中的扩展文件夹,但我无法在 <? 的 pdo 列表中看到它。 php phpinfo(); ?>
    • 你在哪里看到这个错误?在哪个日志上?你是如何启用它的?
    【解决方案3】:

    请注意,您必须使用正确版本的 php_sqlsrv_xx_xts_xxx.dll 和 php_pdo_sqlsrv_xx_xts_xx.dll 文件。

    例如,如果您使用 php 7.4 版和 64 位系统以及 wamp,则必须下载并使用这些文件: php_sqlsrv_74_ts_x64.dll php_pdo_sqlsrv_74_ts_x64.dll 下载你可以使用this site: https://go.microsoft.com/fwlink/?linkid=2152937 https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15

    【讨论】:

      【解决方案4】:

      我花了一些时间来解决“无驱动程序”错误。我完成了此处提到的一些步骤,并发现了其他一些在出现新错误后对我有所帮助的步骤。供将来参考:

      • Microsoft 下载最新的驱动程序(如 Julian Schmuckli 所述)。
      • 检查您的 XAMPP 是否为 64 位 (!) Phpinfo()。如果您有 32 位,则需要不同的驱动程序。
      • 将驱动程序添加到您的 Php.ini 文件并将 dll 保存在您的 php/ext 文件夹中(saber tabatabaee yazdi 的问题)。
      • 对于连接,请使用此代码:
      $dbh = new PDO ("sqlsrv:Server=$server;Database=$dbname",$username,$pw); 
      

      如果添加端口,请使用:

      $server = "192.168.1.15, 51022";
      

      IP(可以是主机名)是您的服务器,51022 是您的端口。

      【讨论】:

        猜你喜欢
        • 2017-09-15
        • 1970-01-01
        • 2018-03-02
        • 2014-03-04
        • 2022-11-02
        • 2021-04-17
        • 2016-08-05
        • 2017-11-07
        相关资源
        最近更新 更多