【发布时间】:2015-02-09 03:05:02
【问题描述】:
我有一个 PHP 5.5 网站,在 Azure 网站中运行 WordPress,配置为使用 64 位 IIS 运行,数据库在 MySQL 中运行。我想将站点转换为在 Azure 中使用 SQL Server 而不是 MySQL。
我已经安装了WP Db Abstraction 插件,并按照它的设置说明进行操作。我选择使用sqlsrv 驱动程序,所以我安装了Microsoft Drivers for PHP for SQL Server 3.1 并将它们添加到WordPress 网站的文件夹中并将它们配置为扩展。在测试页面调用phpinfo()显示sqlsrv驱动已经加载到PHP中,同时还报告PHP是x86的。
我还设置了数据库、用户和密码,并测试了我可以使用 SQLCMD 成功连接到它。
Microsoft Drivers for PHP for SQL Server 3.1 说明指出“Microsoft ODBC Driver 11 for SQL Server version 11”也是必需的。我已经下载了 x64 和 x86 版本,并尝试了相关 Windows 目录中的 DLL,并将它们与两种架构的 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.dllext\php_sqlsrv_55_nts.dllext\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 />";
}
?>
【问题讨论】:
标签: php sql-server wordpress azure-web-app-service