2017-12-18 6 views
0

Ich versuche, meine Anwendung auf Heroku zu verschieben, habe aber Probleme beim Zugriff auf die Datenbank über PHP. Ich kann von meinem Rechner aus lokal auf die AWS-Datenbank zugreifen, aber wenn ich sie auf Heroku ausstelle, schlägt sie fehl.Zugriff auf AWS RDS MySQL + PHP auf Heroku nicht möglich

Ich habe Richtungen von der Hauptseite gefolgt: https://devcenter.heroku.com/articles/amazon-rds

Und ich habe andere Threads versucht, auf SO/AWS:

Getting Mysql2::Error (SSL connection error: ASN: bad other signature confirmation) on Heroku App with AWS RDS

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport

Ich sah auch Anweisungen hier : https://devcenter.heroku.com/articles/getting-started-with-php#provision-a-database

Aber ich versuche, eine bestehende Anwendung zu portieren, also muss ich bei meiner bestehenden PDO-Syntax bleiben. Ich versuche, diese Arbeit zu bekommen:

$dbInfo = getenv('DATABASE_URL'); 
try{ 
    $dbh = new PDO($dbInfo); 
    echo json_encode(array('outcome' => true)); 
} 
catch(PDOException $ex){ 
    echo json_encode(array('outcome' => false, 'message' => 'Unable to connect')); 
} 

ich die Umgebungsvariable korrekt eingerichtet haben und parse_url ausführen können alle der Array-Elemente zuzugreifen; Ich habe auch die amazon-rds-ca-cert.pem im Ordner config.

Ich bin in der Lage remote anmelden (via SequelPro) und haben die folgenden in der Query-Manager, um zu versuchen zu zwingen, SSL-Zertifikat aus:

GRANT USAGE ON *.* TO 'username'@'%' REQUIRE SSL; 

Aber wenn ich absichtlich falsch schreiben die cert Namen meiner lokalen Datenbank Immer noch verbinden, was mich denken lässt, dass mir vielleicht etwas mit der Anforderung fehlt.

Antwort

0

Ich habe es herausgefunden; benötigt, um das SSL-Zertifikat innerhalb der PDO-Verbindung manuell anzugeben. Hatte auch kleinere Fehler in der PDO-Syntax.

try{ 
    $dbh = new PDO("mysql:host=$pdohost;dbname=$pdodb", $pdouser, $pdopass, array(
    PDO::MYSQL_ATTR_SSL_CA =>'path/to/combined-cert.pem' 
)); 
    echo json_encode(array('outcome' => true)); 
} 
catch(PDOException $ex){ 
    echo $ex; 
    echo json_encode(array('outcome' => false, 'message' => 'Unable to connect')); 
} 

auch sicher sein notwendig, um die AWS eingehenden Regeln zu 0.0.0.0/0 zu aktualisieren für Heroku um den Zugang zu ermöglichen.

Verwandte Themen