2016-01-26 95 views
0

我试图通过PD2从我的EC2实例连接到我的MySQL RDS实例。然而,控制台(在所有浏览器上)显示'状态500'错误。这里是我的代码(checkit.php),从their tutorial采取:使用PHP PDO通过EC2实例连接到Amazon RDS(错误500)

<?php 
$error = 0; 
try { 
    $dbhost = $_SERVER['RDS_HOSTNAME']; 
    $dbport = $_SERVER['RDS_PORT']; 
    $dbname = $_SERVER['RDS_DB_NAME']; 

    $dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname}"; 
    $username = $_SERVER['RDS_USERNAME']; 
    $password = $_SERVER['RDS_PASSWORD']; 

    $dbh = new PDO($dsn, $username, $password); 

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
} 
catch (Exception $e){$error = $e->getMessage();} 
echo $error; 
?> 

删除线$dbh = new PDO($dsn, $username, $password);(和涉及$dbh其他行删除错误500报警,所以我知道它是与PDO语句来完成

我周围中搜索了一会儿,似乎是这个重复的问题,不帮我:

  • PHP肯定是安装:庆典php --version和5.6.17打印
  • PDO的将预安装在这个版本的PHP(我相信,但我没有测试这一点)
  • 我可以SSH连接到数据库,这意味着
    • 凭证正确
    • 安全组设置正确

PHP代码以上使用这AJAX'ed:

$('#user').on('submit', function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    url: "checkit.php", 
    type: "POST", 
    data: $(this).serialize(), 
    success: function(data) { 
     errors = data; 
    } 
    }); 
}); 

这种形式(简体):

<form id="user" action="" method="POST" target="_self" autocomplete="on" novalidate> 
    <input name="create" type="checkbox"> 
    <button type="sumbit" name="submit">Submit</button> 
</form> 

导航到http://<ip address>/checkit.php返回错误500状态,所以我怀疑它的任何与AJAX,但尽管如此我已经发布的代码,以防万一。

任何想法从哪里开始?

+0

错误日志中有什么? –

+0

@AlexBlex无法访问它。 '权限被拒绝' – jaunt

+0

而你并非su客,是吗?然后至少在页面上显示:'ini_set('display_errors',1);''和'error_reporting(E_ALL);' –

回答

0

这是由于PDO使用与RDS服务器不同的连接方法,默认情况下系统中不允许使用该方法。运行以下应修复它:

setsebool -P httpd_can_network_connect=1