使 SQL 服务器的 ODBC 驱动程序 11 可用于 Azure 网站中的 PHP

Making ODBC Driver 11 for SQL Server Available For PHP In Azure Website

我有一个 PHP 5.5 网站 运行ning WordPress in Azure Websites 配置为 运行 with 64-bit IIS,数据库 运行ning 在 MySQL。我想将站点转换为使用 Azure 中的 SQL 服务器,而不是 MySQL.

我已经安装了 WP Db Abstraction plugin, and followed its setup instructions. I've elected to use the sqlsrv driver, so I've installed the Microsoft Drivers for PHP for SQL Server 3.1 并将它们添加到 WordPress 网站的一个文件夹中,并将它们配置为扩展。在测试页上调用 phpinfo() 显示 sqlsrv 驱动程序已加载到 PHP,并且还报告 PHP 是 x86。

我还设置了数据库、用户和密码,并测试了我可以使用 SQLCMD 成功连接到它。

用于 SQL Server 3.1 指令的 PHP 的 Microsoft 驱动程序说明还需要 "Microsoft ODBC Driver 11 for SQL Server version 11"。我已经下载了 x64 和 x86 版本,并尝试了相关 Windows 目录中的 DLL,并将它们与两种架构的 PHP 驱动程序一起添加到扩展目录中,但都没有用。

尝试从 运行ning PHP 站点连接到 SQL Azure 数据库时,我收到此错误:

This extension requires the ODBC Driver 11 for SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712

我拥有的与 WordPress 站点根目录相关的驱动程序的 DLL 文件是:

我在应用程序设置网站的 Azure 管理门户中进行了以下设置:

PHP_EXTENSIONS:ext\php_sqlsrv_55_nts.dll

我能想到的是我从 ODBC 驱动程序中遗漏了一些东西,或者我如何让 PHP 驱动程序可以使用它们是不正确的。

有没有人知道我错过了什么,或者为什么这不起作用?

下面是我用来测试 PHP 中的 SQL 服务器连接的测试代码。

<?php
$serverName = "MYSERVER.database.windows.net,1433";
$connOptions = array("UID"=>"MYUSERNAME", "PWD"=>"MYPASSWORD");
$conn = sqlsrv_connect( $serverName, $connOptions );

if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}

if( $client_info = sqlsrv_client_info( $conn)) {
    foreach( $client_info as $key => $value) {
        echo $key.": ".$value."<br />";
    }
} else {
    echo "Error in retrieving client info.<br />";
}
?>

最后我并没有真正找到合适的解决方案,但事实证明,使用 SQL 服务器和 PHP 5.4[= 的所有位17=] 已安装在 Azure 网站中。

我从 PHP 5.5 降级到 5.4,然后 SQL 服务器连接开始工作。

不是真正的修复,但它让我(大部分)达到了我想要的位置。