【问题标题】:PDO sqlsrv: could not find driverPDO sqlsrv:找不到驱动程序
【发布时间】:2017-09-15 08:29:02
【问题描述】:

我试图用 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_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://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15

【讨论】:

    【解决方案2】:

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

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

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

    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 进行检查 -

    希望对某人有所帮助。

    【讨论】:

      【解决方案3】:

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

      • Microsoft 下载最新的驱动程序(如 Julian Schmuckli 所说)。
      • 使用Phpinfo() 检查您的 XAMPP 是否为 64 位(!)。如果您有 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 是您的端口。

      【讨论】:

        【解决方案4】:

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

        我的日志中出现了这个错误:

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

        然后我再次下载了driver 并安装了 x64-Driver。终于可以正常使用了。

        【讨论】:

        • 希望详细描述如何安装它们?我只是在重新启动iis后下载并复制dll到名为php版本的php文件夹中的扩展文件夹,但我无法在
        • 您在哪里看到这个错误?在哪个日志上?你是如何启用它的?
        猜你喜欢
        • 1970-01-01
        • 2022-05-18
        • 2018-03-02
        • 2014-03-04
        • 2022-11-02
        • 2021-04-17
        • 2016-08-05
        • 2017-11-07
        相关资源
        最近更新 更多