私は自分のサーバー上のプロジェクトでPHPを使用してMySQLデータベースに何度もアクセスし、常に同じPHPスクリプトを使用してアクセスしています(ログインの詳細を明らかに変更しています)。ただし、Heroku&ClearDBを使用するのはこれが初めてであり、問題が発生しました。
DBはClearDBを使用するHerokuPHPアプリ上にあり、CLEARDB_DATABASE_URLにアクセスして、ユーザー名、パスワード、ホスト名、およびデータベース名を確認しました。私が正しくそれを行ったことを確認するために、私の理解はこれがフォーマットであるということです:
mysql://USER_NAME:PASSWORD@HOST_NAME/DATABASE_NAME?reconnect=true
MySQL Workbenchでこれらの詳細を使用して、DBにログインし、テーブルを追加することができたので、これらは正しい詳細であると思います。
ただし、同じ変数をURLから取得して、PHPスクリプトを使用してアクセスしようとすると、次のエラーが発生します。
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.
最初は、Herokuアプリが完了したのではないかと思いましたが、データベースにアクセスしようとしないPHPスクリプトの関数には引き続きアクセスできます。
私が言っているように、このスクリプトは以前から常に機能していたので、問題がどこにあるのかわかりません。私のデータベース接続は、次のコンストラクターを持つ別のクラスにあります。
function __construct()
{
$this->DB_HOST = 'us-cdbr-east-02.cleardb.com';
$this->DB_USERNAME = 'the_username_from_url';
$this->DB_PASSWORD = 'the_password_from_url';
$this->DB_DATABASE = 'the_database_name_from_url';
}
他のクラスで必要に応じて呼び出されるconnect()関数を使用します。
function connect()
{
self::$instance = new mysqli($this->DB_HOST, $this->DB_USERNAME, $this->DB_PASSWORD, $this->DB_DATABASE);
if (mysqli_connect_errno()) {
$this->raise_error(printf("Connect failed: %s\n", mysqli_connect_error()));
}
return self::$instance;
}
私は、問題がデータベースに接続しようとしたことが原因であると99.9%確信しています。ブラウザでスクリプトをテストしてもPHPエラーメッセージは返されませんが、500エラーの原因はDBベースの関数だけです。
私はありとあらゆる提案を受け入れます...