如何将 AWS ELB 连接到 RDS 运行 MS SQL?

How to connect AWS ELB to RDS running MS SQL?

AWS 明确指出 here and in the Q&A 可以使用 Elastic Beanstalk 上的 PHP 实例连接到 MS SQL 服务器。

但是,似乎无法安装 MSSQL 驱动程序。

例如,从 ELB 命令行安装 yum php-mssql,会生成错误,指出所需的依赖项版本太高。

这是一个经典的错误报告:

--> Running transaction check
---> Package php-common.x86_64 0:5.3.29-1.8.amzn1 will be installed
--> Processing Conflict: php54-common-5.4.45-1.75.amzn1.x86_64 conflicts php-common < 5.4.45-1.75.amzn1
--> Processing Conflict: php54-pdo-5.4.45-1.75.amzn1.x86_64 conflicts php-pdo < 5.4.45-1.75.amzn1
--> Finished Dependency Resolution
Error: php54-pdo conflicts with php-pdo-5.3.29-1.8.amzn1.x86_64
Error: php54-common conflicts with php-common-5.3.29-1.8.amzn1.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

那么如何在 AWS ELB 上使用 PHP 连接到 MS-SQL?

解决方案是在创建 beantalk 应用程序时选择 Amazon Linux 5.3 版

环境类型屏幕上选择PHP后,下一行显示:

AWS Elastic Beanstalk will create an environment running PHP 5.6 on 64bit Amazon Linux 2015.09 v2.0.8. Change platform version.

单击 link Change platform version,您将看到一个可能版本的下拉列表。

唯一似乎有效的版本是列表中的最后一个版本:5.3 on 64bit Amazon Linux(我没试过 32 位,可能也是位有效。)

然后在 .ebextensions 文件夹中创建一个 01.config 文件并确保它包括:

packages: 
  yum:
    php-mssql: []

注意:此文件中的缩进很重要。

您现在可以使用这样的代码进行连接:

<?php
// connect to database server
$db_conn = mssql_connect("your.rds.amazonaws.com","user","passw0rd")
   or die( "<strong>ERROR: Connection to MYSERVER failed</strong>" );

// select database - only if we want to query another database than the default one
mssql_select_db( "database1", $db_conn )
   or die( "<strong>ERROR: Selecting database failed</strong>" );

// query the database
$query_result = mssql_query( "SELECT * FROM table1", $db_conn )
   or die( "<strong>ERROR: Query failed</strong>" );
$row = mssql_fetch_array($query_result);
echo $row[0];
?>

现在它按预期工作了。

这是 2 天工作的结果,由于此信息似乎在任何地方都不存在,因此在此共享。