質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

5309閲覧

テスト用環境設定ファイルの APP_KEY が設定されません

takopo

総合スコア484

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/04/19 10:21

現在こちらを参考に Laravel のテストについて学んでおりまして、「phpunit の変更」のところまで終わり、その後テスト用環境設定ファイル.env.testingAPP_KEYを設定するために下記のコマンドを実行したのですが、なぜかAPP_KEY=のところは設定されず空のままでした。

php artisan key:generate --env=testing

もしかするとキャッシュが原因かと思いphp artisan config:cacheでキャッシュをクリアした後、もう一度実行してみたところ、.env.testingではなく.envの方のAPP_KEYが変更されていました。
config/appファイルは'key' => env('APP_KEY'),となっていて変更していないので、これは原因じゃなさそうです。いろいろ検索してみたのですが、原因が全く分からず困っております。
もし解決方法がお分かりの方がいらっしゃいましたら、ご教示いただけると助かります。

よろしくお願いいたします。

■ 開発環境
・CentOS 7.6
・Vagrant 2.2.10
・PHP 7.3.22
・Laravel 8.35.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

その記事間違いが多そうなので無視していい。

.env.testingは機能としてはまだ残ってるけど使うことはないので覚えなくていい。
テスト時の環境変数はphpunit.xmlで設定する。
新規作成後に必要な作業はテスト時はインメモリSQLiteを使うように設定するだけ。
最初からコメント状態で用意されてる。こういうのを一切見ないのがLaravel初心者の特徴なので間違ってる記事は一瞬で分かる。

<!-- <server name="DB_CONNECTION" value="sqlite"/> --> <!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="DB_CONNECTION" value="sqlite"/> <server name="DB_DATABASE" value=":memory:"/>

serverからenvに変更なんて余計なことはしなくていい。

  1. 新規プロジェクト作成
  2. phpunit.xmlのDBを設定。
  3. vendor/bin/phpunit

余計なことは何もせずこれでテストできることを確認するのが最初にやること。

投稿2021/04/19 12:00

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takopo

2021/04/19 18:14

ご回答ありがとうございます。 このような方法があったのですね、勉強になります。server から env に変更せずに実行してみたところうまく行きました。 次回からテストするときはこちらの方法で試してみたいと思います。とても参考になりました!
guest

0

ベストアンサー

テストを実行する前は必ずconfig:clear Artisanコマンドを使用して設定のキャッシュをクリアしてください。

と公式サイトに注意書きがあります。

$ php artisan config:clear $ php artisan test

config:cache を実行してしまうと .env.testing ではなく .env の内容が反映されてしまいます。

https://readouble.com/laravel/8.x/ja/testing.html#environment

投稿2021/04/19 14:38

編集2021/04/19 14:39
ucan-lab

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takopo

2021/04/19 18:13

ご回答ありがとうございます。 config:clear Artisan コマンドを実行するとキーが設定されました! キャッシュのクリアでもコマンドによって結果が違ってくるのですね。サイトをきちんと読んでなかったことを反省しております。 無事解決でき大変助かりました。
Lulucom

2021/04/20 00:09

> キャッシュのクリアでもコマンドによって結果が違ってくるのですね。 config:clear は設定キャッシュをクリアするコマンドですが、 config:cache は設定キャッシュを行うコマンドだからですね。 php artisan list config 等で簡単な説明が表示されますので参考にしてみてください。
takopo

2021/04/20 00:59

>Lulucom 様 なるほど config:clear と config:cache にはそういう違いがあったのですね。 細かいところが分かってなかったので勉強になります。 また php artisan list config コマンドも便利そうですね。教えていただきありがとうございます!
ucan-lab

2021/04/20 05:11

補足ですけど、 config:cache すると bootstrap/cache/config.php にキャッシュファイルが生成されます。(ある場合は削除して作り直しされます) 実行してみるとわかりやすいかもです。 このファイルは config/*.php のファイルを実行した結果が1ファイルにまとめられます。これにより高速化されます。 config:clear すると bootstrap/cache/config.php が削除されます。 testを実行する際に bootstrap/cache/config.php があるとこちらを優先して読み込みます。config/*.php は読み込まれなくなるので、phpunit.xmlで環境変数を上書きしても、環境変数を読み込むconfig系が読み込まれないので設定がうまく反映されなかった訳ですね????
takopo

2021/04/20 12:01

> ucan-lab 様 遅くなってすみません。詳細な補足ありがとうございます。 実行して試してみて、なるほどな~と感心させられました。 いろいろと教えてくださったおかげでキャッシュについての理解が深まりました。 これでもし何かエラーがあったとき原因が見つけやすくなるので助かります。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問