如何将 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 天工作的结果,由于此信息似乎在任何地方都不存在,因此在此共享。
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 天工作的结果,由于此信息似乎在任何地方都不存在,因此在此共享。