17.

Laravel アプリケーション名 (namespace / APP_NAME) の変更方法|5.6 以前 vs 5.7 以降

編集
この記事の要点
  • Laravel のアプリケーション名(namespace / 表示名)を変更する方法
  • Laravel 5.6 以前: php artisan app:name MyShop(namespace を一括書き換え)
  • Laravel 5.7 以降: app:name 廃止 → .envAPP_NAME 編集 + php artisan config:clear
  • config/app.php 経由で参照される表示名のみ変わり、namespace は手動変更が必要
  • namespace 変更は composer.jsonautoload.psr-4 も連動して更新

「アプリケーション名」の 2 つの意味

Laravel のアプリケーション名と言うとき、文脈で 2 つの意味があります:

表示名 (APP_NAME)PHP namespace
場所.envAPP_NAME / config('app.name')PHP クラスの namespace App;
用途メール / ページタイトル / UI 表示クラス参照(App\Models\User
変更難易度簡単(1 行書換え)大変(全ファイル書換え)

表示名 (APP_NAME) の変更

.env ファイルの APP_NAME を編集するだけ:

# 1. .env を編集
APP_NAME="MyShop"
# スペースを含むなら必ずダブルクォートで囲む
APP_NAME="My Awesome Shop"

# 2. キャッシュをクリア(重要!.env はキャッシュされる)
php artisan config:clear

# 3. 動作確認
php artisan tinker
>>> config('app.name')
=> "MyShop"

この値は config/app.php 経由で参照されます:

// config/app.php
return [
    'name' => env('APP_NAME', 'Laravel'),  // ← APP_NAME が無いと 'Laravel'
    ...
];

// 各所での参照
config('app.name');         // controller / service
{{ config('app.name') }}    // Blade テンプレート
@yield('title') | {{ config('app.name') }}  // タイトル装飾

namespace の変更(Laravel 5.6 以前)

古い Laravel(5.6 まで)には専用 artisan コマンドがありました:

# 既定の App namespace を MyShop に一括変更
php artisan app:name MyShop

# 変更されるもの:
#   - composer.json の autoload.psr-4
#   - config/app.php の providers / aliases パス
#   - app/Console/Kernel.php / Http/Kernel.php の use 文
#   - app/Models/*.php / Http/Controllers/*.php の namespace 宣言
#   - bootstrap/app.php の Application インスタンス生成

実行後は composer autoload を再生成:

composer dump-autoload
php artisan config:clear
php artisan cache:clear

namespace の変更(Laravel 5.7 以降)

Laravel 5.7 で app:name コマンドは削除されたため、namespace を変更したい場合は手動で行います:

  1. composer.jsonautoload.psr-4 を変更
    "autoload": {
        "psr-4": {
            "MyShop\\": "app/"   ← App\\ から MyShop\\ に
        }
    }
  2. app/ 配下の全 PHP ファイルnamespace App;use App\...MyShop に置換
    • VS Code: Ctrl+Shift+H で namespace Appnamespace MyShop 一括置換
    • 同様に use App\\use MyShop\\
    • \App\\ (バックスラッシュ付き参照)も忘れず
  3. config/app.php の providers / aliases のパスを更新
  4. bootstrap/app.php の Application 設定確認
  5. composer dump-autoload 実行
  6. php artisan config:clear + キャッシュクリア

実用上のおすすめ: namespace は触らない

多くのケースで namespace 変更の必要はありません:

  • App\\ のままでも Laravel は問題なく動く
  • 表示名だけ変えたいなら APP_NAME 編集で十分
  • namespace 変更はパッケージ依存・サードパーティライブラリと相性が悪い
  • 大規模プロジェクトでも App\\Domains\\Shop\\ のようにサブ namespace で組織化する方が一般的

動作確認

# 表示名の確認
php artisan tinker
>>> config('app.name')

# namespace の確認
>>> get_class(new \App\Models\User)
# または変更後
>>> get_class(new \MyShop\Models\User)

# Web ブラウザでアクセスして 500 エラーが出ないこと
php artisan serve

関連

  • サイト URL の変更: APP_URL=https://example.com も .env で変更
  • 多言語化: resources/lang/ja/messages.php でアプリ名の翻訳を管理
  • テスト: phpunit で $this->assertEquals('MyShop', config('app.name'))
  • Laravel 公式推奨: namespace は変えず、APP_NAME のみで対応するのがメンテナンスが楽
編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストールと設定
  2. クイックスタート & チュートリアル(初心者向け)
  3. クイックスタート & チュートリアル(中級者向け)
  4. ルーティング
  5. Bladeテンプレート(ビュー/レイアウト)
  6. コントローラー
  7. マイグレーションとテーブル定義
  8. データベースの設定
  9. Eloquentモデル (ORM)
  10. SQLとクエリビルダー
  11. バリデーション
  12. .envファイルの設定値へのアクセス
  13. 動作環境による分岐処理
  14. configフォルダ配下の設定値へのアクセス
  15. assetヘルパーを利用したpublicフォルダへのアクセス
  16. storageフォルダへのアクセス
  17. アプリケーション名の変更
  18. メンテナンス
  19. ログイン画面(認証システム)の作成
  20. ログインの必須化
  21. ログインユーザー情報の取得
  22. ルートの認証化
  23. 本番サーバーへのデプロイ方法
  24. 多言語化
  25. csrf_field
  26. ファイルのダウンロード
  27. CSVのアップロードおよび読み込み(maatwebsite/excel)
  28. ページタイトルの設定
  29. コマンド一覧
  30. エラー一覧
  31. SQLの実行ログ出力方法
  32. キャッシュのクリア
  33. Selectの結果の最初もしくは最後に任意の値を追加する方法
  34. ajaxでPOST通信する際の注意点
  35. ソーシャルログインの実装
  36. セッション情報の確認
  37. ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
  38. redirectやreturn viewにメッセージを付与する方法
  39. クッキー(cookie)の設定と取得
  40. クラスの再読み込み
  41. csrfの有効時間を変更する方法
  42. ViewComposerを用いてviewに共通の値を付与する方法
  43. View::shareを用いて共通の値を各ビューに渡す方法
  44. ミドルウェアを用いた処理の共通化
  45. Middleware内でAuth::check()などを使用する方法
  46. Controller以外でリダイレクトする方法
  47. セッションの値の取得/保存/更新/削除
  48. $requestの値を変更する方法
  49. 常時SSL化
  50. ページング(ページネーション)をする方法
  51. vue.jsとの連携
  52. Vue.jsと連携するSPA実行環境構築
  53. .envの値をvue.jsで参照する方法
  54. vue.jsを本番環境にリリースする方法
  55. could not find driver(Windows, MySQL編)