Amazon EC2 从命令行而非 Web 服务器连接到 RDS

Amazon EC2 Connects to RDS from command line but not from web server

如果有 amazon ec2 实例 运行ning php 5.5 和 apache2。我正在使用一个简单的 test.php 脚本连接到我的 RDS 数据库。当我 运行 作为 ec2-user 或 root 的脚本时,我能够获得连接。 当我通过我的网络服务器 运行 相同的脚本时,我得到

Connection Can't connect to MySQL server on 'ip' (13).

我已经尝试了 public 和私有 IP 地址。这个脚本确实适用于我的其他非亚马逊网络服务器 运行ning 相同 php 和 apache。不确定接下来要看什么,因为它在命令行上工作。这是 test.php 脚本的示例,非常简单。

define("DB_IP”,”ip”);
define("DB_USERNAME”,”username”);
define("DB_PASSWORD”,”password”);
define("DB_DATABASE”,”database”);

echo "Connecting...\n";
$conn = new mysqli(DB_IP, DB_USERNAME, DB_PASSWORD, DB_DATABASE, 3306);

// Check connection
if ($conn->connect_error) {
   die(date('H:i:s')." Connection " . $conn->connect_error);
} 
echo date('H:i:s')." Connected successfully\n";

为什么连接在命令行上有效,但从网络服务器调用时却无效?

您 运行在您的 EC2 上安装什么? 只是询问它是否是 SELinux(安全增强 Linux),在这种情况下它可能是安全限制。

在您的终端,如果您 运行:

getsebool -a | grep httpd

您应该能够看到此限制(无论您的网络服务器是否可以 "network"。如果不能,那么 运行 这应该可以解决您的问题:

setsebool -P httpd_can_network_connect 1

希望能解决问题,否则我看不出问题出在哪里,尤其是因为您说您可以通过终端连接(所以 AWS 安全组不应该是问题所在)。

随时通知我们 ;)