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;
}
我该做别的?
答
当我在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的驱动程序。最后它没有任何问题。
请问您的服务器是否有Microsoft Visual C++ 2015 Redistributable? – Eimsas
@Eimsas是的。它有。 –
然后尝试检查日志,它应该比“无法找到驱动程序”更多的信息我有与WAMP相同的问题,但后来我只是安装了MS C++并尝试了几个版本的php_sqlsrv。还需要重新启动,至少在wamp中。 – Eimsas