无法在Heroku上访问AWS RDS MySQL + PHP
我试图将我的应用程序移动到Heroku,但是我通过PHP访问数据库时遇到问题。我能够从本地机器访问AWS数据库,但是当我部署到Heroku时,它会失败。无法在Heroku上访问AWS RDS MySQL + PHP
我已经按照从主页面方向:https://devcenter.heroku.com/articles/amazon-rds
而且我试过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
我也看到了这里的说明: https://devcenter.heroku.com/articles/getting-started-with-php#provision-a-database
但我试图移植现有的应用程序,所以我需要坚持我现有的PDO语法。我试图得到这个工作:
$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'));
}
我的环境变量设置正确,可以运行parse_url访问所有的数组项的;我也有位于config文件夹中的amazon-rds-ca-cert.pem。
我能够(通过SequelPro)远程登录,并运行在查询管理下,试图迫使SSL证书:
GRANT USAGE ON *.* TO 'username'@'%' REQUIRE SSL;
但是,当我故意拼错了证书名称我的本地数据库可以仍然连接,这让我想也许我错过了一些需求。
回答:
想通了;需要在PDO连接中手动指定SSL证书。在PDO语法中也有小错误。
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'));
}
还需要确定更新AWS入站规则0.0.0.0/0
允许Heroku的访问。
以上是 无法在Heroku上访问AWS RDS MySQL + PHP 的全部内容, 来源链接: utcz.com/qa/260744.html