使ODBC驱动程序11 for SQL Server可用于PHP Azure网站

问题描述:

我有一个PHP 5.5网站在Azure网站中运行WordPress,配置为使用64位IIS运行,数据库在MySQL中运行。我想将该网站转换为使用Azure中的SQL Server而不是MySQL。使ODBC驱动程序11 for SQL Server可用于PHP Azure网站

我已经安装了WP Db Abstraction插件,并按照其设置说明进行操作。我选择使用sqlsrv驱动程序,所以我安装了Microsoft Drivers for PHP for SQL Server 3.1并将它们添加到WordPress网站的文件夹中,并将它们配置为扩展名。在测试页上调用phpinfo()显示sqlsrv驱动程序已加载到PHP中,并且还报告PHP是x86。

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

用于SQL Server 3.1的Microsoft驱动程序PHP指示声明还需要“用于SQL Server版本11的Microsoft ODBC驱动程序11”。我已经下载了x64和x86版本,并尝试将DLL从相关的Windows目录中除去,并将它们添加到两个体系结构的PHP驱动程序的扩展目录中,但都没有成功。

当试图连接到从运行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文件:

  • ext\msodbcsql11.dll
  • ext\php_sqlsrv_55_nts.dll
  • ext\1033\msodbcsqlr11.rll

我有以下的Azure管理门户网站设置为网站的应用程序设置:

PHP_EXTENSIONS:ext\php_sqlsrv_55_nts.dll

所有我可以计算的是,我现在不是缺少从ODBC驱动程序的东西,或者我如何让它们可用于PHP驱动程序是不正确的。

有没有人有任何想法,我已经错过了,或为什么这是行不通的?

下面是我用来测试PHP中的SQL Server连接性的测试代码。

<?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 Server和PHP 5.4已经安装在Azure的网站。

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

不是一个修复,但它让我到了我想要的位置(主要是)。