使用ClearDB在Heroku上部署PHP Web App

时间:2019-06-07 02:16:24

标签: php mysql heroku pdo

因此,在过去的几周中,我一直在开发一个PHP Web应用程序,现在它已经接近完成,我想尝试将其部署在Heroku上。我遵循了scotch.io上的教程,并且非常直观。直到我到达数据库连接。我将指导您完成我所采取的步骤,也许有人可以指出我出了问题的地方。

在开始之前,我必须提到我正在使用PDO进行数据库连接和后续的SQL查询。 scotch.io教程不使用PDO,所以这就是我出轨的原因。此外,我的应用程序位于以下URL上:https://fathomless-bastion-62027.herokuapp.com/index.php

我已完成步骤11:将本地数据库表导入Heroku DB。我运行了heroku config | grep CLEARDB_DATABASE_URL命令,获取了我的cleardb URL,并按照this other scotch.io tutorial进行了mysql命令,该命令用于从phpmyadmin导出的sql文件中重定向输出。

我不确定我是否做对了,因为如果我从Heroku管理面板转到ClearDB,然后导航到“ Dev&Production Edition”,则不会显示任何内容。但是,如果我尝试从步骤11重新运行mysql命令,cli会给我一个错误,指出我的表已经存在。我不知道,也许我是偏执狂,我一直在努力解决一个小时以上。

现在我们到达车轮从货车上掉落的地方。本教程说我们必须去更新一些database.php文件,但是我没有。就像我上面说的,我正在使用PDO,以及我学习PHP的方式(去年是上大学的一个Web开发班),我们所有的数据库连接都是通过我们的主文件中的PHP代码段完成的,所以我就是这样做的为我的应用程序。您可以查看我的代码库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();
}
?> 

看起来是正确的,尽管显然不是因为当您尝试转到我的Web应用程序时,可以在此处再次访问:https://fathomless-bastion-62027.herokuapp.com/index.php,但没有任何显示。打开Chrome Dev工具,我得到500 ISE,无法加载资源。我感到我的问题在于我的应用无法连接数据库。抱歉,如果我要问的是琐碎的-这个Web应用程序更多是出于我自己的学习目的,如果您有经验的PHP开发人员查看git repo,您​​可能会发现许多明显的错误。尽管它们一定会发生,但是我对此还很陌生。

如果您在我的博文中做到了这一点,并且能够为我提供帮助,我将感激不尽。任何建议表示赞赏。谢谢!

-丹

1 个答案:

答案 0 :(得分:1)

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