SqlSrv驱动程序没有与IIS 10和PHP 5.6加载
问题描述:
我已经在全新的Windows 10机器上安装了一个新的IIS 10服务器,其中PHP 5.6.31VC11 x64非线程安全(目前无法使用PHP7)。 PHP现在运行良好,phpinfo()
正确显示一切。SqlSrv驱动程序没有与IIS 10和PHP 5.6加载
我刚刚安装了PHP SQL驱动程序,但未加载。它没有出现在phpinfo()
,当我尝试在代码中使用它,我得到以下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 SQL司机,我做了以下内容:
- 下载并安装在Microsoft ODBC Driver 11 for SQL Server(64)
- 下载并安装了Microsoft Driver for PHP for SQL Server(SQLSRV32.EXE)
- 启用在PHP管理器(
php_sqlsrv_56_nts.dll
和php_sqlsrv_56_nts.dll
)扩展 - 重新启动IIS服务器
[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
这一切看起来正确的给我,我已经成功地在其他机器上这样做过。我觉得我错过了简单的事情。
其他一些注意事项:
- 的PHP错误日志是空的。
- 我试过加载我下载的所有其他dll文件(例如针对5.5,5.4等),但它不会改变任何东西。
值得一提的是,我安装的Xdebug就好了,它是显示phpinfo()
起来。
答
我已经通过使用x86而不是x64的PHP解决了此问题。我猜SQL驱动程序不是为x64设计的(尽管我无法在任何地方看到它)。
只要我更改为PHP 5.6 VC11 x86 Non Thread Safe一切都运行得更好。
请注意,您需要Visual C++ Redistributable for Visual Studio 2012 x86才能正常工作。如果您已经安装了x64可再发行组件,则需要安装专为x86设计的版本。
用于PHP 7的SQL Server驱动程序支持x64。 – alalp