PDO sqlsrv:找不到驱动程序

问题描述:

我试图连接到PHP中的SQL Server。使用本地机器上的XAMPP,一切运行良好。但现在我要把我的应用程序放到生产服务器上。PDO sqlsrv:找不到驱动程序

在此服务器上安装了Microsoft IIS 6.1并运行PHP版本7.0.7。我还安装了here的ODBC驱动程序。接下来,我decomment下面一行在我的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; 
} 

我该做别的?

+0

请问您的服务器是否有Microsoft Visual C++ 2015 Redistributable? – Eimsas

+0

@Eimsas是的。它有。 –

+1

然后尝试检查日志,它应该比“无法找到驱动程序”更多的信息我有与WAMP相同的问题,但后来我只是安装了MS C++并尝试了几个版本的php_sqlsrv。还需要重新启动,至少在wamp中。 – Eimsas

当我在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的驱动程序。最后它没有任何问题。