繁体   English   中英

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

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

如果有运行php 5.5和apache2的亚马逊ec2实例。 我正在使用一个简单的test.php脚本连接到我的RDS数据库。 当我以ec2-user或root身份运行脚本时,就可以建立连接。 当我通过网络服务器运行相同的脚本时,我得到

连接无法连接到“ ip”上的MySQL服务器(13)。

我已经尝试过公共和私有IP地址。 这个脚本确实可以从我的其他非Amazon网络服务器上运行相同的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";

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

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

在终端上,如果您运行:

getsebool -a | grep httpd

您应该能够看到此限制(您的Web服务器是否可以“联网”。如果不能,请运行此服务器,这应该可以解决您的问题:

setsebool -P httpd_can_network_connect 1

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

让我们发布;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM