1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPUnitを動かすと「No application encryption key has been specified.」で怒られた話

Posted at

はじめに

題名の通り、PHPUnitを動かした際に No application encryption key has been specified. でほとんどのテストがエラー落ちしていました。

しかしながら暗号キーは設定済みです。envにもちゃんと記載されていました。
原因が何か理解するまでに結構時間を取られてしまったので、備忘録として残しておきます。

因みにLaravelは5.5を使用しています。

エラーの内容

まず、テストがエラー落ちしている原因ですが、題名にもあるように No application encryption key has been specified. というExceptionが発生しているからです。

このExceptionはenvファイルのAPP_KEYの値が適切でない場合は起こります。
.env.exampleをコピーしてそのまま使っていたーっていう場合に良く起きます。

この時はプロジェクトルートで php artisan key:generateを打つことで自動で.envの中のAPP_KEYに暗号キーを設定してくれます。

今回のケース

今回も同じExceptionが発生しているのですが、暗号キーが設定されていないわけではありません。
localhostで稼働しているシステムにアクセスすれば普通にページが見れていました。
PHPUnitを走らせたときにだけ発生してます。

テスト実行前には、config:clear Artisanコマンドを実行し、設定キャッシュをクリアするのを忘れないでください。

公式ドキュメントを見ると上記のように書いているので php artisan config:clear を叩いて設定キャッシュをクリアしましたがそれでもダメでした。

解決策

解決する方法ですが、config:clear だけでは不十分だったようです。
一度設定キャッシュをクリアし、最新の設定情報を再度キャッシュさせる必要がありました。

$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!

php artisan config:cache を叩くと、クリアとキャッシュの両方を行ってくれます。
こうして、最新の設定情報をキャッシュさせた状態でPHPUnitを動かすと、先ほどのExceptionは発生しなくなりました。

まとめ

キャッシュのクリア後には、再度キャッシュするのを忘れないこと!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?