#18 Laravel基礎
ConfigとEnvで設定を管理する
.envとConfigの役割
Laravelの設定は2層構造になっています。
| ファイル | 役割 |
|---|---|
.env | 環境ごとに変わる値(DB接続情報、APIキーなど)を書く。Gitにコミットしない |
config/*.php | アプリの設定をまとめたファイル群。.env の値を参照することが多い |
.env ファイル
# 📁 .env(プロジェクトルートにある)
APP_NAME="My App"
APP_ENV=local # local / production / testing
APP_DEBUG=true # 本番では必ず false にする
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=root
DB_PASSWORD=secret
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
.env は .gitignore に含まれています。チームには .env.example を共有します。
config() ヘルパーで設定値を取得する
コード内で設定値を取得するときは直接 .env を読まず、config() ヘルパーを使います。
// 良い書き方
$appName = config('app.name'); // config/app.php の name キー
$dbHost = config('database.connections.mysql.host');
// 悪い書き方(コード内で直接 env() を呼ばない)
$appName = env('APP_NAME'); // ← キャッシュが効かなくなるため非推奨
カスタム設定ファイルを作る
独自の設定を追加したい場合は config/ フォルダにPHPファイルを追加します。
<?php
// 📁 config/sns.php(新規作成)
return [
'twitter' => [
'api_key' => env('TWITTER_API_KEY'),
'api_secret' => env('TWITTER_API_SECRET'),
],
'posting' => [
'max_length' => 280,
'auto_post' => env('SNS_AUTO_POST', false), // デフォルト値を設定
'allowed_types' => ['text', 'image'],
],
];
// 使い方
$apiKey = config('sns.twitter.api_key');
$maxLen = config('sns.posting.max_length'); // → 280
設定のキャッシュ
本番環境では設定をキャッシュすることでパフォーマンスが上がります。
# 設定をキャッシュする
php artisan config:cache
# キャッシュをクリアする
php artisan config:clear
⚠️ キャッシュ後は .env の変更が反映されません。変更したら config:cache を再実行してください。
環境の判別
// 現在の環境を確認
app()->environment() // "local", "production" など
app()->environment('local') // true / false
app()->isProduction() // 本番かどうか
環境ごとに処理を分けたい場合:
// 📁 app/Providers/AppServiceProvider.php
public function boot(): void
{
if (app()->environment('local')) {
// 開発環境だけ実行する処理
\Illuminate\Database\Eloquent\Model::preventLazyLoading();
}
}
よく使う config の設定値
config() のキー | 対応 .env | 説明 |
|---|---|---|
app.name | APP_NAME | アプリ名 |
app.env | APP_ENV | 環境名 |
app.debug | APP_DEBUG | デバッグモード |
app.url | APP_URL | アプリのURL |
app.timezone | APP_TIMEZONE | タイムゾーン |
app.locale | APP_LOCALE | 言語 |
database.default | DB_CONNECTION | DBドライバー |
mail.default | MAIL_MAILER | メールドライバー |
cache.default | CACHE_DRIVER | キャッシュドライバー |
queue.default | QUEUE_CONNECTION | キュードライバー |
まとめ
.envは環境ごとの秘密情報を書く場所。Gitにコミットしない- コード内では
env()ではなくconfig()を使う config/フォルダにPHPファイルを置くだけでカスタム設定を追加できる- 本番では
php artisan config:cacheでキャッシュして高速化する
次回はキャッシュを使ってパフォーマンスを改善する方法を学びます。