【2026年最新】php artisan key:generate 完全ガイド | Laravel 12対応

チートシート

📋 ← Laravel artisanコマンド全一覧に戻る

最終更新: 2026年2月 | Laravel 12対応

Laravelのアプリケーションキー(APP_KEY)を生成するphp artisan key:generateコマンドについて、基本的な使い方から実務での注意点、トラブルシューティングまで徹底解説します。

💡 他のコマンドも知りたい方は artisanコマンド完全チートシート をご覧ください

1. key:generateコマンドとは

php artisan key:generateは、Laravelアプリケーションの暗号化キー(APP_KEY)を生成するコマンドです。

このコマンドでできること

  • セキュアな32文字のランダムキーを自動生成
  • .envファイルのAPP_KEYに自動設定
  • セッション、Cookie、パスワードの暗号化に使用

いつ使うのか

必ず実行が必要なタイミング:

  • Laravelプロジェクトを新規作成した直後
  • .env.exampleから.envをコピーした後
  • 本番環境への初回デプロイ時
  • 開発環境を新しく構築した時

⚠️ 実行してはいけないタイミング:

  • 本番環境で既に稼働中のアプリケーション(後述)

2. 基本的な使い方

最も基本的な使い方

php artisan key:generate

実行結果:

Application key set successfully.

.envファイルのAPP_KEYが以下のように設定されます:

APP_KEY=base64:ランダムな文字列(32文字をbase64エンコード)

例:

APP_KEY=base64:5K8vFZjKvK9J3xQ7w2nR1mP6tY4uI9oE2sD3fG8hJ7k=

オプション一覧

オプション説明使用例
--showキーを生成して表示のみ(.envに書き込まない)php artisan key:generate --show
--force本番環境でも強制実行(危険)php artisan key:generate --force

–showオプションの使い方

.envを変更せずにキーだけ確認したい場合:

php artisan key:generate --show

出力例:

base64:nP8mK3xQ7w2vF5jZ9J6hY4uI1oE2sD3fG8tR7kL5aM=

用途:

  • CI/CDで環境変数として設定する場合
  • 複数環境で同じキーを使いたい場合(非推奨)
  • キーをバックアップしたい場合

3. アプリケーションキーの役割

APP_KEYが使われる場面

  1. セッションデータの暗号化
   // セッションに保存されるデータが暗号化される
   session(['user_id' => 123]);
  1. Cookieの暗号化
   // Cookieの値が暗号化される
   Cookie::queue('preferences', $data, 60);
  1. 暗号化ヘルパーの使用
   // encrypt/decryptで使用
   $encrypted = encrypt('secret data');
   $decrypted = decrypt($encrypted);
  1. CSRFトークンの生成
   // フォームのCSRFトークン生成に使用
   @csrf

APP_KEYがないとどうなる?

RuntimeException: No application encryption key has been specified.

このエラーが出た場合は、すぐにkey:generateを実行してください。

4. 実務での使用シーン

シーン1: 新規プロジェクト作成時

# Laravelプロジェクト作成
composer create-project laravel/laravel my-project

cd my-project

# .envファイルの確認
cat .env | grep APP_KEY
# APP_KEY= (空欄の場合がある)

# キー生成
php artisan key:generate

# 確認
cat .env | grep APP_KEY
# APP_KEY=base64:xxxxxx... (設定された)

シーン2: Gitクローン後の環境構築

# リポジトリをクローン
git clone https://github.com/your-repo/your-project.git
cd your-project

# 依存関係インストール
composer install

# .envファイル作成
cp .env.example .env

# データベース設定など編集
vim .env

# キー生成(重要!)
php artisan key:generate

# マイグレーション実行
php artisan migrate

⚠️ よくあるミス:
.envをコピーした後にkey:generateを忘れると、セッションやCSRFトークンが正常に動作しません。

シーン3: Docker環境での設定

# Dockerfile内での自動化例
FROM php:8.2-fpm

# ... 省略 ...

# エントリーポイントスクリプト
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["docker-entrypoint.sh"]
#!/bin/bash
# docker-entrypoint.sh

# .envが存在しない場合は作成
if [ ! -f .env ]; then
    cp .env.example .env
    php artisan key:generate
fi

# コンテナ起動
exec "$@"

シーン4: CI/CDパイプラインでの設定

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup Environment
        run: |
          cp .env.example .env
          php artisan key:generate

      - name: Run Tests
        run: php artisan test

💡 ベストプラクティス:
環境変数として事前に生成したキーを設定する方法:

# GitHub Secretsに APP_KEY を登録しておく
- name: Setup Environment
  run: |
    echo "APP_KEY=${{ secrets.APP_KEY }}" >> .env

5. よくあるエラーと対処法

エラー1: “No application encryption key has been specified”

RuntimeException: No application encryption key has been specified.

原因:

  • .envファイルにAPP_KEYが設定されていない
  • APP_KEY=が空欄

解決方法:

php artisan key:generate

エラー2: “Invalid APP_KEY”や暗号化エラー

Illuminate\Contracts\Encryption\DecryptException: 
The payload is invalid.

原因:

  • APP_KEYが途中で変更された
  • 本番環境でキーを再生成してしまった

解決方法:

# バックアップから元のAPP_KEYを復元
# または、セッション・Cookieをクリア
php artisan cache:clear
php artisan config:clear

⚠️ 重要: 本番環境で既に稼働しているアプリのAPP_KEYを変更すると、全ユーザーのセッションが無効化されます。


エラー3: “Unable to write to .env file”

ErrorException: file_put_contents(/path/to/.env): 
failed to open stream: Permission denied

原因:
.envファイルの書き込み権限がない

解決方法:

# 権限確認
ls -la .env

# 権限付与(開発環境のみ)
chmod 664 .env

# または、手動で設定
php artisan key:generate --show
# 出力されたキーを.envに手動でコピー

エラー4: 本番環境で確認プロンプトが出る

**************************************
*     Application In Production!     *
**************************************

Do you really wish to run this command? (yes/no) [no]:

原因:
.envAPP_ENV=productionの時は安全装置が働く

対処法:

# 本当に実行したい場合のみ
php artisan key:generate --force

⚠️ 警告: 本番環境で実行すると全ユーザーがログアウトされます!

6. 本番環境での注意点

⚠️ 絶対にやってはいけないこと

# 本番環境で既に稼働中のアプリで実行 ← 絶対NG!
php artisan key:generate --force

何が起こるか:

  1. 全ユーザーのセッションが無効化(強制ログアウト)
  2. 暗号化されたCookieが復号化不可能に
  3. データベースに保存された暗号化データが読めなくなる

本番環境での正しい手順

初回デプロイ時

# ローカルで生成
php artisan key:generate --show

# 出力されたキーをメモ
# base64:xxxxxxxxxxxxxxxxxxxxx

# サーバー側の.envに手動で設定
vim /path/to/production/.env
# APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxx

キーローテーションが必要な場合(セキュリティ侵害時)

30年の実務経験から言うと、APP_KEYの変更は計画的なメンテナンス時間に行うべきです。

手順:

  1. メンテナンスモード開始
php artisan down --secret="your-secret-token"
  1. 全セッションをクリア
php artisan cache:clear
# Redisを使っている場合
redis-cli FLUSHDB
  1. 新しいキー生成
php artisan key:generate --force
  1. 暗号化データの再暗号化(必要な場合)
// 暗号化されたカラムがある場合は再暗号化が必要
  1. メンテナンスモード終了
php artisan up
  1. ユーザーに通知
    「セキュリティ強化のため、再度ログインが必要です」

環境変数での管理(推奨)

.env での管理:

APP_KEY=base64:xxxxx

環境変数での管理(より安全):

# サーバー環境変数として設定
export APP_KEY="base64:xxxxx"

# Laravelは環境変数を優先的に読み込む

Docker Compose例:

services:
  app:
    environment:
      - APP_KEY=${APP_KEY}

7. Laravel 12での変更点

パフォーマンス改善

  • キー生成速度が若干向上(体感差はほぼなし)

互換性

  • Laravel 12でも同じ仕様を維持
  • 既存のAPP_KEYはそのまま使用可能

セキュリティ強化

  • より強固な乱数生成アルゴリズムを使用(内部実装の改善)

8. チートシート(コピペ用)

# 基本的な使い方
php artisan key:generate

# キーを表示のみ(.envに書き込まない)
php artisan key:generate --show

# 本番環境で強制実行(危険!)
php artisan key:generate --force

# 現在のキー確認
cat .env | grep APP_KEY

# または
php artisan tinker
>>> config('app.key')

9. 関連するArtisanコマンド

セキュリティ関連:

環境設定関連:

📋 Laravel artisanコマンド完全一覧に戻る

まとめ

覚えておくべきポイント

DO(やるべきこと):

  • 新規プロジェクトでは必ず実行
  • .env.exampleコピー後は必ず実行
  • 初回デプロイ時に実行

DON’T(やってはいけないこと):

  • 本番環境で既存アプリのキーを再生成
  • APP_KEYをGitにコミット
  • 複数環境で同じキーを使い回す

PHP開発経験から

APP_KEYの管理は、Laravelアプリケーションのセキュリティの根幹です。

実際にあったトラブル例:

  • 本番環境で誤ってkey:generateを実行 → 全ユーザーログアウト → 大クレーム
  • .envをGitにコミット → APP_KEYが漏洩 → セキュリティインシデント

これらのミスは一度経験すると二度と忘れません。ぜひこの記事を参考に、正しい運用を心がけてください。

環境に合わせた.envファイルのAPP_KEYの項目が変更されます。
この値は暗号化に利用されるので、不用意に変更すると、DBなどに保存されたパスワードの照合などができなくなってしまうので、サービス稼働後に変更をすることは基本的にできません。

Source

役にたったと思ったら応援をお願いします m(._.)m

タイトルとURLをコピーしました