laravelを使用してcomposer 5.3の新しいコピーをインストールしましたが、このエラーが引き続き発生します。
サポートされている暗号は、正しいキー長のAES-128-CBCおよびAES-256-CBCのみです。 configディレクトリのapp.phpファイルは
'cipher' => 'AES-128-CBC'、
Appicationフォルダーに。envが必要です。次に実行します:
$ php artisan key:generate
。envがない場合。env.exampleからコピー:
$ cp .env.example .env
端末で次のコマンドを実行します。
php artisan config:clear
それから
php artisan config:cache
php artisan key:generate
を実行します。
php artisan config:clear
を実行し、
その後、php artisan config:cache
そして、物事が機能し始めます!
そのマシンでLaravelプロジェクトを初めて実行する場合、必要な requirements があることを確認してください。プロジェクトディレクトリでCMD/Terminalを開くか、
cd to/your/project/dir
このコマンドを再度与えます:
composer update
.env.example
を.env
に変更し、dbエラーを回避するために、特にデータベース構成でそのファイルに必要な変更を加えます。それから
php artisan key:generate
これは、Laravelプロジェクトを作成するか、gitからクローンを作成するたびに、このAES暗号キーの長さの問題を解決します。
わかりました、これは基本的に既に答えられました、しかし、私はそれらの2つのうちの1つを抑制または便秘したいくつかの警告を見つけました...
まず、すでに述べたように、既存の.env
ファイルをそのままコピーすることで、ターミナルで達成できる有効な.env.example
ファイルがあることを確認する必要があります。
$ cp .env.example .env
次に、アプリケーションキーを生成します
$ php artisan key:generate
これが完了したら、必ず.envファイルを開いて、APP_KEY行が正しいことを確認してください。これが私の疑問の由来です。
APP_KEY=base64:MsUJo+qAhIVGPx52r1mbxCYn5YbWtCx8FQ7pTaHEvRo=base64:Ign7MpdXw4FMI5ai7SXXiU2vbraqhyEK1NniKPNJKGY=
キーの長さが間違っていることに気付くでしょう、何らかの未知の理由で(おそらくkey:generateを複数回実行することにより)、そこに2つのbase64=
キーがあります。 Artisan/Laravelのバグのようです
この答えが、同じ問題や迷惑なバグに苦しんでいる人に役立つことを願っています。
これらの手順に従ってください:
ステップ1:アプリケーションに.envファイルがあることを確認します。このコマンドを実行しない場合はcp .env.example .env
ステップ2:次のコマンド(php artisan key:generate
)を実行してキーを生成すると、.envファイルに自動的に保存されます。
ステップ3:php artisan config:cache
を実行する
それはすべてを修正します。
.env
ファイルでこのキーを与えると完了です
APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E
まだ動かない?
CLIから作業している場合は、サーバーを再起動してください。
説明が必要ですか?
エラーメッセージに次のように表示されます。
サポートされている暗号は、正しいキー長のAES-128-CBCおよびAES-256-CBCのみです。
AES-128-CBC
のキーの長さは16文字です(例:ABCDEF123ERD456E)
AES-256-CBC
のキーの長さは32文字です(例:ABCDEF123ERD456EABCDEF123ERD456E
config/app.php
でcipher
が上記の2つのような適切な暗号に設定され、キーが.env
ファイルAPP_KEY
変数を指していることを確認してください。私のアプリにはAES-256-CBC
暗号セットがあるため、APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E
のような32文字のキーを指定しましたが、その後はすべて正常に機能しました。
APP_KEYが設定されていない場合は、.envファイルを確認してください。問題です。今すぐphp artisan key:generate
を実行してからphp artisan config:cache
を実行してください
.envファイルにAPP_KEYキーを設定します。
APP_KEYがすでに設定されている場合、同じコマンドを実行します。このキーが更新されます。
composer create-project --prefer-dist laravel/laravel market
のようなコマンドを使用してlaravelプロジェクトを新規作成し、cpコマンドを使用して新しいリポジトリをアプリケーションパスにデプロイすると、この問題が発生する場合があります。
私はlaravel 5.4を使用します
roofe@www:~/market$ php artisan --version
Laravel Framework 5.4.33
laravelプロジェクトを作成すると、次のようなキーを作成するログを確認できます。
自動ロードファイルの生成
Illuminate\Foundation\ComposerScripts :: postUpdate php artisan optimize最適化されたクラスローダーの生成コンパイルされたサービスファイルは削除されました。 php artisan key:generate application key [base64:exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/k =]は正常に設定されました。
デフォルトでは、config/app.phpのキー設定は次のとおりです。プロジェクトの作成時に生成されるキーはAES-256-CBC
を使用し、.env
ファイルに保存されます。 cp -r ./* /var/www/market/
のようなコマンドを使用すると、.env
ファイルはアプリケーションパスに移動しません。
/* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | This key is used by the Illuminate encrypter service and should be set | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | */ 'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC',
Deployコマンドをcp -r ./* ./.env /var/www/market/
に変更すると、この問題はなくなりました。
このgithub issue も参照できます。
Artisanコマンドが機能せず、コマンドラインで同じエラーが表示される場合、composerがすべてのファイルを取得するのに十分な仕事をしていないことを意味します。ベンダーフォルダーを削除してcomposer update
を実行する必要があります再び。
確認すべきもう1つのことは、.envファイルがwww-dataグループ(またはhttpdまたはWebサーバーグループ)にあり、グループに読み取り権限があることです。
Linuxでは、このエラーが発生したとき、許可は次のようになりました。-rw-rw-r-- 1 kevin kevin 618 Mar 16 09:32 .env
次に、すべての読み取り許可を削除し、グループの書き込み許可を削除しました。 chmod 640 .env
その後、グループをwww-dataに変更しましたchown kevin:www-data .env
私の権限は次のようになりました:-rw-r----- 1 kevin www-data 516 Mar 16 09:35 .env