将Godaddy托管的PHP脚本连接到Amazon RDS不起作用

时间:2017-09-19 07:53:56

标签: php pdo amazon-rds

最初,我在Godaddy上的一个超级古老的经典Linux主机帐户。我拥有的所有PHP脚本都可以连接到我的Amazon RDS。

我刚刚将Godaddy托管升级到他们今天提供的最新共享托管,PHP脚本似乎不再有效。

我确实将新的Godaddy主机帐户IP添加到我的AWS RDS实例上的安全组中的入站/出站IP列表中,但是我收到以下错误(我用连字符替换了第一部分):

Conection failed: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '---------------.us-west-1.rds.amazonaws.com' (110)

我的PHP脚本在顶部包含以下内容:

define("DB_HOST", "---------------.us-west-1.rds.amazonaws.com");
define("DB_USER", "-------------");
define("DB_PASS", "-------------");
define("DB_NAME", "-------------");

try {
    $GLOBALS['_pdo_conn'] = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
    // Set the PDO error mode to exception
    $GLOBALS['_pdo_conn']->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected Successfully!";   
}
catch(PDOException $e) {
    echo "Conection failed: " . $e->getMessage();
}

我还尝试手动添加端口号:

define("DB_HOST", "---------------.us-west-1.rds.amazonaws.com");
define("DB_USER", "-------------");
define("DB_PASS", "-------------");
define("DB_NAME", "-------------");

try {
    $GLOBALS['_pdo_conn'] = new PDO("mysql:host=".DB_HOST.";port=3306;dbname=".DB_NAME, DB_USER, DB_PASS);
    // Set the PDO error mode to exception
    $GLOBALS['_pdo_conn']->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected Successfully!";   
}
catch(PDOException $e) {
    echo "Conection failed: " . $e->getMessage();
}

我已经检查并重新检查了IP以确保其正确无论我尝试做什么,我似乎无法连接到Amazon RDS。

Godaddy阻止了这个或者我在设置中缺少某些东西吗?

编辑:我自己解决了(见下面的回答)

3 个答案:

答案 0 :(得分:1)

只需使用PHP脚本

<?php

$cURLConnection = curl_init();

curl_setopt($cURLConnection, CURLOPT_URL, 'https://ifconfig.me/');
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);

echo curl_exec($cURLConnection);
curl_close($cURLConnection);

?>

将其存储在名为whatismyip.php的文件中,并将其放在您的public_html文件夹下。 像这样访问该文件

http://{your-domain-name}/whatismyip.php

然后,您可以获得确切的传出IP地址。

答案 1 :(得分:0)

您必须转到Amazon RDS设置中的“数据库安全组”,并允许您的EC2实例或特定IP(通过其CIDR / IP设置)访问数据库。

默认情况下,RDS拒绝访问任何外部计算机,包括您自己的EC2实例,直到您正确设置安全设置。

答案 2 :(得分:0)

由于我有多个不同公司的多个托管,我能够从我的Godaddy帐户上的php脚本向我与其他公司的其他托管帐户之一做一个简单的curl请求,看看实际的IP是什么从Godaddy的最后提出卷曲请求。

原来,IP与cpanel仪表板上提供的IP Godaddy不同。不知道为什么会这样。我唯一的猜测是Godaddy试图让经验不足的客户更难找到这个IP。

添加此IP,我发现我的亚马逊安全组入站/出站列表修复了此问题。