質問: new PDO("mysql:dbname={$dbDatabase}, host={$dbHost}, charset=utf8, {$dbUsername}, {$dbPassword}"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); } catch (PDOException $Exception) { die('DB接続エラー: ' . $Exception->getMessage()); } return $db; } ``` 調べても中々答えを考えられずどうしたらよいのか分からずにいます。 何かヒントや気付きでもよいのでご回答いただけないでしょうか。 何卒よろしくお願いいたします。 2021/02/02 追記 .envファイルの内容です。 下記に記入した項目は、heroku configで表示させたデータベース情報を元にしました。 ``` DB_HOST="ホスト名" DB_USERNAME="ユーザー名" DB_PASSWORD="パスワード名" DB_DATABASE="データベース名" ``` エラー発生後、.envファイルを確認した際データベース名が間違えていたので修正したのですが解決できませんでした。 追記 heroku側での設定です。 ![画像の説明をここに入力](https://i.stack.imgur.com/yW6tv.png)
回答: dotenvの使い方としては、例えばローカル環境のDB接続用のデータを入れておいて、本番サーバなどではホスティングの環境変数(HerokuでいうところのConfig Vars)を利用することで上書きするというやり方が一般的です。 dotenvの環境変数とホスティングの環境変数両方あった場合ではホスティングの環境変数が優先して利用される仕組みです。 そのためローカル環境の接続情報でしたらdotenvファイル自体はignoreせずにgitにプッシュしてしまって運用しても問題ないと思います。 またローカル環境が必要ない & アプリを動作環境に環境変数が設定できるのであれば、そもそもdotenvを利用する必要はないでしょう。 Herokuであれば ``` getenv('XXXXX') ``` で取得できるでしょう。 参考: 環境設定を定義する