gpt4 book ai didi

php - 无法在 Heroku 上访问 AWS RDS MySQL + PHP

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:58 26 4
gpt4 key购买 nike

我正在尝试将我的应用程序迁移到 Heroku,但我在通过 PHP 访问数据库时遇到了问题。我可以从本地机器访问 AWS 数据库,但是当我部署到 Heroku 时失败。

我已按照主页上的说明进行操作: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 来访问所有数组项;我还有位于配置文件夹中的 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 访问。

关于php - 无法在 Heroku 上访问 AWS RDS MySQL + PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47861938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com