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 安全组不应该是问题所在)。
随时通知我们 ;)
如果有 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 安全组不应该是问题所在)。
随时通知我们 ;)