0Pricing
PHP Academy · レッスン

環境変数と.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.io

Laravelの.env統合

Laravelはvlucas/phpdotenvを使用して、.envを自動的に読み込みます。env()ヘルパーで値にアクセスできます。

<?php
$host = env("DB_HOST", "127.0.0.1"); // "127.0.0.1" is the default

config()と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:clear

phpdotenvを使った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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. NginxとPHP-FPMの設定
  2. 環境変数と.envファイル
  3. GitHub Actionsでデプロイする
  4. PHPアプリケーションをDocker化する
← PHP Academyに戻る