環境変数と.envファイル
.envファイルとPHPのdotenvライブラリで機密性の高い設定を管理します
「環境変数と.envファイル」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
環境変数を使う理由
認証情報や環境ごとの設定をソースコードにハードコードすると、安全性が低下し、デプロイも脆弱になります。環境変数によって設定とコードを分離できます。
.envファイル
.envファイルには、起動時に環境へ読み込まれるキーと値の組が含まれます。.gitignoreに追加し、決してバージョン管理にコミットしないでください。
# .env
APP_ENV=production
APP_KEY=base64:...
DB_HOST=127.0.0.1
DB_NAME=myapp
DB_USER=myapp_user
DB_PASS=supersecret
REDIS_HOST=127.0.0.1
MAIL_HOST=smtp.mailtrap.ioLaravelの.env統合
Laravelはvlucas/phpdotenvを使用して、.envを自動的に読み込みます。env()ヘルパーで値にアクセスできます。
<?php
$host = env("DB_HOST", "127.0.0.1"); // "127.0.0.1" is the defaultconfig()とenv()の比較
env()はconfig/*.phpファイル内でのみ使用します。それ以外の場所ではconfig("database.host")を使用します。これにより、設定のキャッシュを正しく利用できます。
<?php
// In config/database.php:
"host" => env("DB_HOST", "127.0.0.1")
// In your service classes:
$host = config("database.connections.mysql.host");設定のキャッシュ
本番環境では設定をキャッシュし、リクエストごとに.envを解析する処理を省きます。
$ php artisan config:cache
# After changing .env:
$ php artisan config:clearphpdotenvを使ったPlain PHP
Laravel以外ではvlucas/phpdotenvを使用します。
$ composer require vlucas/phpdotenv
<?php
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = $_ENV["DB_HOST"];必須変数
起動時に必須の環境変数を検証し、設定の不足を早期に検出します。
<?php
$dotenv->required(["DB_HOST", "DB_NAME", "DB_USER", "DB_PASS"]);
$dotenv->required(["DB_PORT"])->isInteger();.env.exampleファイル
すべての変数名を含み、値は含まない.env.exampleファイルをコミットします。開発者はこれを.envにコピーして、それぞれの値を入力します。
サーバーレベルの環境変数
本番環境では、.envファイルではなく、サーバーレベルで環境変数を設定します(systemdのサービスファイル、Dockerの--envフラグ、Kubernetesのシークレットなど)。
# systemd service:
[Service]
Environment="APP_ENV=production"
Environment="DB_HOST=db.internal"シークレット管理
機密性の高い認証情報(APIキー、証明書)には、シークレットマネージャーの利用を検討します。CIにはHashiCorp Vault、AWS Secrets Manager、またはGitHub Actions secretsを使用できます。
まとめ
環境ごとの設定はすべて.envに保存します。決してコミットしないでください。アプリケーションコードではconfig()を使用し、env()は設定ファイル内でのみ使用します。本番環境ではphp artisan config:cacheで設定をキャッシュします。
確認問題
Laravelアプリケーションでは、どこでenv()を呼び出すべきですか?
よくある質問
「環境変数と.envファイル」レッスンは無料ですか?
はい。「環境変数と.envファイル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「環境変数と.envファイル」で何を学びますか?
.envファイルとPHPのdotenvライブラリで機密性の高い設定を管理します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「環境変数と.envファイル」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。