こんにちは、ニキです。
この記事はこんな方におすすめです。
- Laravelをインストールした後の初期設定を知りたい
- Docker上でLaravelを動かしているときの特別な設定も知りたい
- 設定内容の理由も理解したい
今回の記事では、Laravelの初期設定についてです。タイムゾーンや表示言語、データベースへの接続設定について解説します。
すでにDocker上でLaravelプロジェクトを始めている前提で進めますが、ローカルマシンにLaravelを直接インストールしている場合でも役立つ内容にしています。また、これからプロジェクトを始める方には以下の記事がおすすめです。
環境情報
- Chip: Apple M1
- macOS: Ventura 13.2.1
- Docker: 20.10.22
コンテナ上の環境情報
- Laravel: 10.16.1
- PHP: 8.2.8
- Nginx: 1.25.1
- MySQL: 8.0.34
作成・変更する初期設定
お急ぎの方のために、先にまとめです。
- config/app.php
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
- .envと.env.example
DB_HOST=db
DB_PASSWORD=root
- lang/ja/auth.php
- lang/ja/pagination.php
- lang/ja/passwords.php
- lang/ja/validation.php
Laravelのtimezoneを変更する初期設定
timezoneをAsia/Tokyoに変更
config/app.phpのtimezoneを以下のように修正します。
'timezone' => 'Asia/Tokyo',
動作確認を含めた解説は以下の記事で扱っています。
Laravelの表示言語を変更する初期設定
デフォルトでは英語のメッセージが表示されるので、他言語を扱いたい場合にconfig/app.phpのlocaleの値を変更します。
英語のメッセージをカスタマイズするか、他言語のメッセージを使いたい場合にlangディレクトリ以下のlocaleに対応するファイルを編集します。
Laravel 10からlangディレクトリがデフォルトで含まなくなりました。代わりに、lang:publish
を使ってlangディレクトリを作れるようになりました。
Though not relevant to existing applications, the Laravel application skeleton no longer contains the
引用 https://laravel.com/docs/10.x/upgrade#language-directorylang
directory by default. Instead, when writing new Laravel applications, it may be published using thelang:publish
Artisan command:php artisan lang:publish
Laravel 9まではlang/enをコピーしてlang/jaを作るのが通例でしたが、php artisan lang:publish
でlang/enを作成した後にlang/jaにリネームするのがいいと思います。
デフォルトのlocaleで表示されるメッセージを確認
langディレクトリが存在しなくてもメッセージを表示できます。
> echo __('auth.password')
The provided password is incorrect.
localeをjaに変更して表示されるメッセージを確認
config/app.phpのlocaleを以下のように変更し、日本語対応します。
'locale' => 'ja',
変更の反映を確認するために、REPL環境に入り直します。
> exit
# php artisan tinker
localeはjaが設定されていますが、lang/ja/auth.phpにpasswordの定義が無いか、ファイルが存在しないと、fallback_localeのenが適用されます。
> echo __('auth.password')
The provided password is incorrect.
fallback_localeにen以外を設定すると以下のようになるので、enのままにしておくことを推奨します。
> echo __('auth.password')
auth.password
langディレクトリを作成表示されるメッセージを確認
langディレクトリを作成します。プロジェクトルートに作成されます。
# php artisan lang:publish
lang/enで作成されているので、lang/jaに変更します。
lang/ja/auth.phpのpasswordの値を以下のように変更します。
'password' => 'パスワードが正しくありません。',
変更の反映を確認するために、REPL環境に入り直します。
> exit
# php artisan tinker
auth.passwordを再度確認すると、以下のように日本語でメッセージが表示されます。
> echo __('auth.password')
パスワードが正しくありません。
すべてのメッセージを日本語訳するのは大変なので、日本語翻訳ツールを活用すると作業を減らせます。
Laravelでデータベースへ接続するための初期設定
.envのDB_HOSTとDB_PASSWORDを以下のように変更します。機密情報でなければ、.env.exampleも同様に変更しておくと他の人に共有できて便利です。
DB_HOST=db
DB_PASSWORD=root
- DB_HOST
Dockerを利用するなら127.0.0.1ではなく、mysqlコンテナのサービス名かコンテナ名を指定する必要があります。コンテナ間の通信をするためにはホストマシンを経由します。compose.yaml内の名前を指定することで解決できます。
ちなみに、127.0.0.1はループバックアドレスであり、appコンテナ自身のlocalhostを指しますので、コンテナの外に抜けられません。
- DB_PASSWORD
compose.yamlのMYSQL_ROOT_PASSWORDの値です。
以下のコマンドでマイグレーションを実行します。
# php artisan migrate
エラーがなければ、作成されたテーブルを確認しましょう。
まとめ
今回の記事は、Laravelの初期設定についてでした。タイムゾーンや表示言語、データベースへの接続設定について解説しました。
続いて、Laravel BreezeとNext.jsを使ったフロントエンドとの認証方法については、以下の記事で解説しています。