PDO sqlsrv:找不到驱动程序

Jul*_*kli 5 php sql-server pdo sql-server-2008

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

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

extension=php_sqlsrv_7_nts.dll
extension=php_pdo_sqlsrv_7_nts.dll
Run Code Online (Sandbox Code Playgroud)

我从Microsoft官方网站上获得了文件。

我怎么了

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

could not find driver
Run Code Online (Sandbox Code Playgroud)

对于连接,我正在使用以下功能,该功能在我的本地计算机上运行良好:

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;
}
Run Code Online (Sandbox Code Playgroud)

我还能做什么?

Man*_*ash 12

这是详细的过程,如果对某人有帮助的话。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:\xampp\php\ext,您的路径可能会有所不同。

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

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

检查SqlSRV是否启用

使用phpinfo()或 http://localhost/dashboard/phpinfo.php 进行检查,如下所示 -

PHP 信息中的 SQLSrv 驱动程序检查

希望,它会对某人有所帮助。


Jul*_*kli 7

在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
Run Code Online (Sandbox Code Playgroud)

然后我再次下载了驱动程序并安装了 x64-Driver。最后它工作没有任何问题。

  • 想更多地描述如何安装它们?我只是在重启 iis 后下载并复制 dll 到名为 php 版本的 php 文件夹中的扩展文件夹,但我在 < 的 pdo 列表中看不到它?php phpinfo(); ?> (3认同)