Итак, в течение последних нескольких недель я разрабатывал веб-приложение на PHP, и теперь, когда оно почти завершено, я хочу попробовать развернуть его на Heroku.Я следовал руководству по scotch.io , и оно было довольно интуитивно понятным.Пока я не добрался до подключения к базе данных.Я проведу вас по шагам, которые я предпринял, и, возможно, кто-то может указать, где я ошибся.
Прежде чем начать, я должен упомянуть, что я использую PDO для подключения к базе данных и последующих запросов SQL.В учебнике по scotch.io PDO не используется, поэтому я потерпел крушение.Кроме того, мое приложение работает по следующему URL-адресу: https://fathomless -bastion-62027.herokuapp.com / index.php
Я перешел к шагу 11: импорт локальных таблиц БД вГероку Д.Б.Я запустил команду heroku config | grep CLEARDB_DATABASE_URL
, получил свой URL-адрес cleardb и, согласно этому другому учебнику scotch.io , я сделал свою команду mysql
, которая использовалась для перенаправления вывода из моего экспортированного файла sql из phpmyadmin.
Я не уверен, что все сделал правильно, потому что, если я зайду в ClearDB из админ-панели Heroku и перейду к «Dev & Production Edition», ничего не появится.Но если бы я попытался повторно запустить команду mysql из шага 11, то в результате выполнения команды cli я получил бы ошибку, заявив, что мои таблицы уже существуют.Я не знаю, может быть, я параноик, я пытался это исправить в течение часа +.
Теперь мы подошли к тому месту, откуда начали падать колеса.В руководстве говорится, что мы должны обновить какой-то файл database.php
, но у меня его нет.Как я уже говорил выше, я использую PDO и то, как я изучал PHP (посещал уроки веб-разработки в прошлом году в колледже), все наши соединения с базами данных выполнялись с помощью фрагментов PHP в наших основных файлах, поэтому я так и сделалдля моего приложения.Вы можете просмотреть мою кодовую базу ЗДЕСЬ .
Итак, я попытался установить соединение с базой данных в моем файле index.php, основываясь на шаге 12 из учебника по Scotch, и основал свой код на некоторых других публикациях SO о ClearDB и PDO.Это то, к чему я пришел, и у меня нет никакого способа проверить это.Кроме того, это находится в моем основном файле 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 Dev, я получаю 500 ISE, не удалось загрузить ресурсы.Я чувствую, что моя проблема заключается в неспособности моего приложения подключиться к базе данных.Извиняюсь, если то, что я спрашиваю, кажется тривиальным - это веб-приложение больше для моих собственных целей обучения, и если вы более опытные разработчики PHP, посмотрите на git-репо, вы, вероятно, найдете много очевидных ошибок.Они обязательно произойдут, хотя, я довольно новичок в этом.
Если вы зашли так далеко в моем посте и можете помочь мне, я не могу вас отблагодарить.Любой совет приветствуется.Спасибо!
-Дан