SqlSrv驱动程序未加载IIS 10& PHP 5.6

时间:2017-08-01 00:17:25

标签: iis php-5.6 sqlsrv

我在新的Windows 10计算机上安装了一个新的IIS 10服务器PHP 5.6.31 VC11 x64非线程安全(暂时不能使用PHP7)。 PHP现在运行良好,public static void main(String[] args) throws VTDException{ VTDGen vg = new VTDGen(); if (!vg.parseFile("d:\\xml\\medline17n0001.xml", false)) return; VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); System.out.println("nesting level"+vn.getNestingLevel()); String PMIDtoSearch = "30000"; ap.selectXPath("/PubmedArticleSet/PubmedArticle[MedlineCitation/PMID = "+PMIDtoSearch+"]"); System.out.println("====>"+ap.getExprString()); int i=0,count=0; System.out.println(" token count ====> "+ vn.getTokenCount() ); while((i=ap.evalXPath())!=-1){ count++; System.out.println("string ====>"+vn.toString(i)); } System.out.println(" count ===> "+count); } 正在正确显示所有内容。

我刚安装了PHP SQL驱动程序,但没有加载。它没有出现在phpinfo()中,当我尝试在代码中使用它时,我得到以下PHP错误:

phpinfo()

要安装PHP SQL驱动程序,我执行了以下操作:

  • 已下载并安装了Microsoft ODBC Driver 11 for SQL Server(x64)
  • 下载并安装Microsoft Driver for PHP for SQL Server(SQLSRV32.EXE)
  • 在PHP管理器(PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in test.php:3 Stack trace: #0 test.php(3): PDO->__construct('sqlsrv:server=...', '', '') php_sqlsrv_56_nts.dll
  • 中启用了扩展程序
  • 重新启动IIS服务器

PHP extensions

php_sqlsrv_56_nts.dll

这一切对我来说都是正确的,我之前在其他机器上成功完成了这项工作。我觉得我错过了一些简单的东西。

其他几点说明:

  • PHP错误日志为空。
  • 我已经尝试加载我下载的所有其他dll文件(例如针对5.5,5.4等的文件),但它没有改变任何内容。

值得注意的是,我安装了Xdebug就好了, 显示在[PHP_XDEBUG-2.5.5-5.6-VC11-NTS-X86_64] extension=php_xdebug-2.5.5-5.6-vc11-nts-x86_64.dll [PHP_PDO_ODBC] extension=php_pdo_odbc.dll [PHP_PDO_SQLSRV_56_NTS] extension=php_sqlsrv_56_nts.dll [PHP_SQLSRV_56_NTS] extension=php_sqlsrv_56_nts.dll

2 个答案:

答案 0 :(得分:2)

我已经通过使用PHP for x86而不是x64解决了这个问题。我猜测SQL驱动程序不是为x64设计的(虽然我无法在任何地方看到它)。

一旦我改为PHP 5.6 VC11 x86 Non Thread Safe,一切都会好转。

请注意,您需要Visual C++ Redistributable for Visual Studio 2012 x86才能生效。如果您已经安装了x64可再发行组件,则需要安装专为x86设计的版本。

答案 1 :(得分:-1)

或使用此库:php_pdo_sqlsrv_73_nts.dll