環境変数の管理にライブラリPHPDOTENVを使うので、ライブラリの管理ツールを導入
PHPでライブラリを導入したいときはComposerを使うと便利。
ComposerはPHPの依存管理ツール
Composerの仕組み
composer.jsonとcomposer.lockファイルで依存するライブラリを定義する。
composer.json- プロジェクトで使用するライブラリを一覧にしたもの
 
composer.lock- 実際にどのライブラリのどのバージョンをダウンロードしたかをひとまとめにしたもの
 
composer installを実行すると、インストールしたライブラリとバージョン情報が書き出されるcomposer.lockがある状態でcomposer installすると、composer.lockに記されたバージョンのライブラリがインストールされるComposerのコマンド
init対話形式でcomposer.jsonを作成するcomposer init
require新しいライブラリを追加するcomposer.jsonにライブラリが、composer.lockに実際にインストールしたものが記載されるcomposer require <ライブラリ名>
installcomposer.jsonもしくはcomposer.lockにしたがってライブラリをインストールする-共通のバージョンのライブラリを使うことができるcomposer install
removeライブラリを取り除く- 通常の変数 - PHPのコードの中で定義し、実行したプロセス内でのみ使用できる
 - 環境変数 - PHPが動いているOSに保存し
PHPアプリケーションに渡す仕組み(OSに格納される変数)PHPで環境変数をつかう
.envファイルを使って環境変数を管理(phpdotenv) .envファイル: 重要な設定データを定義 = 環境変数1
DB_HOST=db
- プログラムのファイル: 
.envファイルに定義された値を取得して使える1
2$dbHost = $_ENV['DB_HOST']
$link = mysqki_connect($dbHost, ..., ..., ...);Composerのインストール
docker-compose exec app composer init
設定はそのままエンター連打。文字を入力するのは以下の2か所
Author [, n to skip]: nを入力
Do you confirm generation [yes]? yesを入力src以下にcomposer.jsonファイルができているphpdotenvのインストール
GitHubより、インストール法をコピペdocker-compose exec app composer require vlucas/phpdotenv.envファイルに環境変数を定義
.env1
2
3
4DB_HOST="db"
DB_USERNAME="book_log"
DB_PASSWORD="pass"
DB_DATABASE="book_log"PHPファイルで読み込み
phpファイルの最初にライブラリを読み込む1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
require __DIR__ . '/../vendor/autoload.php'; // オートロードファイルを読み込む
function dbConnect()
{
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..'); // .envファイルを読み込む
$dotenv->load();
$dbHost = $_ENV['DB_HOST']; // 環境変数を変数に代入
$dbUsername = $_ENV['DB_USERNAME'];
$dbPassword = $_ENV['DB_PASSWORD'];
$dbDatabase = $_ENV['DB_DATABASE'];
$link = mysqli_connect($dbHost, $dbUsername, $dbPassword, $dbDatabase); // 環境変数を代入した変数を使ってデータベースに接続
if (!$link) {
echo 'Error: データベーに接続できません' . PHP_EOL;
echo 'Debugging error: ' . mysqli_connect_error() . PHP_EOL;
exit;
}
return $link;
}