【发布时间】:2019-06-07 10:31:20
【问题描述】:
所以在过去的几周里,我一直在开发一个 PHP Web 应用程序,现在它已接近完成,我想尝试在 Heroku 上部署它。我按照scotch.io 上的教程进行操作,非常直观。直到我得到数据库连接。我将引导您完成我所采取的步骤,也许有人可以指出我哪里出错了。
在开始之前,我必须提到我正在使用 PDO 进行数据库连接和后续 SQL 查询。 scotch.io 教程不使用 PDO,所以这就是我出轨的原因。此外,我的应用位于以下 URL:https://fathomless-bastion-62027.herokuapp.com/index.php
我开始执行第 11 步:将本地数据库表导入 Heroku 数据库。我运行了heroku config | grep CLEARDB_DATABASE_URL 命令,获得了我的cleardb URL,并且根据this other scotch.io tutorial,我创建了我的mysql 命令,该命令用于重定向我从phpmyadmin 导出的sql 文件的输出。
我不确定我是否做对了,因为如果我从 Heroku 管理面板转到 ClearDB,然后导航到“开发和生产版”,什么也没有出现。但是如果我尝试从第 11 步重新运行 mysql 命令,cli 会给我一个错误,说我的表已经存在。我不知道,也许我是偏执狂,我已经尝试解决这个问题一个多小时了。
现在我们到了车轮开始从马车上掉下来的地方。教程说我们必须去更新一些database.php 文件,但我没有。正如我上面所说,我正在使用 PDO,并且我学习 PHP 的方式(去年大学参加了一个网络开发课程),我们所有的数据库连接都是在我们的主文件中使用 PHP sn-ps 完成的,所以这就是我的方式为我的应用程序做的。你可以查看我的代码库HERE。
因此,我尝试根据 Scotch 教程中的第 12 步在我的 index.php 文件中建立数据库连接,并将我的代码基于有关 ClearDB 和 PDO 的其他一些 SO 帖子。这就是我得出的结论,我真的没有任何方法可以测试它。此外,它位于我的主 index.php 文件中,如果这有助于您查明我哪里出错了。
<?php
//Get Heroku ClearDB connection information
$cleardb_url = parse_url(getenv("CLEARDB_DATABASE_URL"));
$cleardb_server = $cleardb_url["host"];
$cleardb_username = $cleardb_url["user"];
$cleardb_password = $cleardb_url["pass"];
$cleardb_db = substr($cleardb_url["path"],1);
try {
$pdo = new PDO("mysql:host=".$cleardb_server."; dbname=".$cleardb_db, $cleardb_username, $cleardb_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
这看起来正确,但显然不是因为当您尝试访问我的网络应用程序时,再次访问此处:https://fathomless-bastion-62027.herokuapp.com/index.php,没有任何显示。打开 Chrome 开发工具,我得到 500 ISE,无法加载资源。我感觉我的问题在于我的应用程序无法连接到数据库。抱歉,如果我的要求似乎微不足道 - 这个网络应用程序更多地是为了我自己的学习目的,如果你更有经验的 PHP 开发人员看看 git repo,你可能会发现许多明显的错误。但它们一定会发生,我对此很陌生。
如果您在我的帖子中做到了这一点并且能够帮助我,我非常感谢您。任何建议表示赞赏。谢谢!
-丹
【问题讨论】: