AWSでMySQL RDSインスタンスを設定しました。インスタンスをインスタンス化した後、EC2のコマンドラインから接続しようとしましたが、問題なく動作します。しかし、私のPHPコードを介して接続しようとすると、私はerrosを取得します。以下は、私の接続性をテストしようとしたサンプルコードです。PDSを使用してAWS RDSに接続できません
<?php
try{
$dbh = new pdo('aws-test-db.hibizibi.us-west-2.rds.amazonaws.com;dbname=test',
'root',
'password',
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
die(json_encode(array('outcome' => true)));
}
catch(PDOException $ex){
die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));
}
{"outcome":false,"message":"Unable to connect"}
が得られます。私の元のコードはidiorm(PDOを使用)を使用しています。データベースに接続する部分は、以下のようになります。
# configure ORM
ORM::configure('mysql:host='.DB_SERVER.';dbname='.DB_NAME);
ORM::configure('username', DB_SERVER_USERNAME);
ORM::configure('password', DB_SERVER_PASSWORD);
私は以下のエラートレースを取得の上から:
SQLSTATE[HY000] [2005] Unknown MySQL server host 'aws-test-db.hibizibi.us-west-2.rds.amazonaws.com:3306' (11)
#0 /var/www/html/main/admin/applications/vendors/idiorm/idiorm.php(255): PDO->__construct('mysql:host=aws-...', 'root', 'password', NULL)
#1 /var/www/html/main/admin/applications/vendors/idiorm/idiorm.php(237): ORM::_setup_db('default')
UPDATE
を私が使用して接続しようとする私のテストコードを更新しますmysqlの拡張機能で、mysqlで動作しますが、PDOでは動作しませんでした。
<?php
$servername = "aws-test-db.hizibizi.us-west-2.rds.amazonaws.com";
$username = "root";
$password = "password";
$dbname='test';
try{
$dbh = new pdo(
'mysql:'.$servername.';dbname='.$dbname.';',
$username,
$password,
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
die(json_encode(array('outcome' => true)));
} catch(PDOException $ex) {
echo json_encode(array('outcome' => false, 'message' => $ex->getMessage()))."\n";
}
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n";
今、私は{"outcome":false,"message":"SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '\/var\/lib\/mysql\/mysql.sock' (2)"}
を取得していますが、PDOに接続しようとしています。 mysqlによる私の試みは成功しています。問題は特にPDOにあるようです。私がチェックできるものはありますか?
ありがとうございます$ dbport = $ _SERVER ['RDS_PORT']; PHPコードですか? – error2007s
はデフォルトで3306を試してはいけませんか? –
aws-test-db.hibizibi.us-west-2.rds.amazonaws.com; dbname = test; port = 3306;を置き換えてみてください。あなたが接続できるかどうかを確認してください。 – error2007s