【问题标题】:Deploying PHP Web App on Heroku with ClearDB使用 ClearDB 在 Heroku 上部署 PHP Web App
【发布时间】: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,你可能会发现许多明显的错误。但它们一定会发生,我对此很陌生。

如果您在我的帖子中做到了这一点并且能够帮助我,我非常感谢您。任何建议表示赞赏。谢谢!

-丹

【问题讨论】:

    标签: php mysql heroku pdo


    【解决方案1】:

    500 是 PHP 错误。你真的需要检查你的错误日志文件。如果您不知道日志文件的位置,请使用 phpinfo() 命令转储您的环境配置并查找“error_log”。 我的猜测是你没有正确解析 CLEARDB_DATABASE_URL,但是,不知道它的值,我不能说什么是错的。

    【讨论】:

    • 感谢您的帮助!原来它只是一个变量名被改变了,prepare() 函数无法执行,所以网站就崩溃了。我会记住错误记录,我是 Heroku 的新手,所以我不知道日志存储在哪里
    猜你喜欢
    • 1970-01-01
    • 2022-11-08
    • 2020-05-17
    • 2017-06-06
    • 1970-01-01
    • 2022-08-15
    • 2022-09-25
    • 2017-01-04
    • 2020-10-05
    相关资源
    最近更新 更多