環境変数の管理にライブラリ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 <ライブラリ名>
install
composer.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;
}