web-dev-qa-db-ja.com

laravelサポートされている暗号化ツールが見つかりません。暗号および/またはキーの長さが無効です

Laravelを使用してプロジェクトを構築しています。 localhostで正常に機能していましたが、サーバーにアップロードすると(サーバーにcomodo sslがインストールされています)、次のエラーが表示されます。

RuntimeException in EncryptionServiceProvider.php line 29:
No supported encrypter found. The cipher and / or key length are invalid
in EncryptionServiceProvider.php line 29
at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in Container.php line 733
at Container->build(object(Closure), array()) in Container.php line 626
at Container->make('encrypter', array()) in Application.php line 674
at Application->make('Illuminate\Contracts\Encryption\Encrypter') in Container.php line 837
at Container->resolveClass(object(ReflectionParameter)) in Container.php line 800
at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 771
at Container->build('SahraSalon\Http\Middleware\EncryptCookies', array()) in Container.php line 626
at Container->make('SahraSalon\Http\Middleware\EncryptCookies', array()) in Application.php line 674
at Application->make('SahraSalon\Http\Middleware\EncryptCookies') in Pipeline.php line 123
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 118
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86
at Kernel->handle(object(Request)) in index.php line 54

誰でもこのエラーを解決できますか?

75
Rahman za

サーバーに必要な拡張機能がすべてインストールされていますか?

  • PHP> = 5.5.9
  • OpenSSL PHP拡張
  • PDO PHP拡張
  • Mbstring PHP拡張
  • トークナイザーPHP拡張

OpenSSL拡張機能が欠落している可能性があります。また、.envファイルにキーが設定されていますか?


実行してみてください:

php artisan key:generate


回答:'cipher' => ''が設定されていません。

66
Salkz

コンソールで入力するだけです:

php artisan key:generate

App.phpでこのキーを変更しない場合は、手動で変更してください。


次に、このエラーメッセージが表示された場合:

[エラー例外]
file_get_contents(/path/to/my/project/.env):ストリームのオープンに失敗しました:そのようなファイルまたはディレクトリはありません

次に、.env.exampleファイルのコピーを作成して、再試行します。

cp .env.example .env
php artisan key:generate
93
onavascuez

以前にも同じ問題があり、この方法で修正しました:config/app.phpに移動し、"cipher" => "anything"を変更します

'cipher' => MCRYPT_RIJNDAEL_128,
9
Vuong Tran

エラーを修正しました。

  1. Shift+Clickマウスの右ボタンを押して、ルートプロジェクトから「commend window here」を開きます。
  2. コンソールに書き込みます:"php artisan key:generate"
  3. 'key' => env('APP_KEY', 'insert get 32 char key')のようなconfig/app.phpに32文字の「マーク」を取得、//行番号81
7
dkbn90

これを実行して修正しました:

php artisan config:cache
6
Rowayda Khayri

ルートディレクトリに.env.exampleファイルがある場合は、.envに変更してからphp artisan key:generateを実行します。これは私のために働いた。

5
Tirth Patel

私の場合、mcrypt拡張機能を有効にする必要があります。

しかし、最初に、すでに持っているかどうかを確認してください:

$ Sudo apt-get install -y mcrypt php5-mcrypt

Mcryptモジュールがロードされているかどうかを確認します。

$ php -m | grep mcrypt

何も表示されない場合は、ロードされていないためですが、既に上記のインストール済みですか?だからこれを行う:

$ php5enmod mcrypt
$ Sudo service Apache2 restart

もう一度確認すると、何も表示されずにmcryptが表示されます。それは良い兆候です。アプリをリロードして、次のエラーを修正してください;)

$ php -m | grep mcrypt
mcrypt
4
Lucas Serafim

コンソールに書き込むphp artisan key:generate

次のようなメッセージが表示されます:Application key [get 32 char key] set successfully.

'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81のようにconfig/app.phpのアプリキーを置き換えます

4

で解決:

pHPアーティザンキー:生成

4
Plugue

.envファイルからキーを読み取る代わりにapp.php構成ファイルを使用している場合、キー変数のenv()関数を削除できます(例:

'key' = env('someRandom36CharsString'),

'key' = 'someRandom36CharsString',
3
rüff0

ライブUbuntuサーバーへの展開を解決できました。ここにすべてのステップがあります

PHP> = 5.5.9を確認してください

OpenSSL、Mbstring、Tokenizer、mcryptがインストールされていることを確認してください。

PHP(Ubuntu)にmcryptをインストールするには:

Sudo apt-get install php5-mcrypt,
Sudo php5enmod mcrypt

ストレージフォルダーを書き込み可能にします。

chmod -R 0777 storage

ApacheがLavarel/publicフォルダーをホームとして使用するようにします。

DocumentRoot /home/code2/public_html/Laravel-Project/public
    <Directory "/home/code2/public_html/Laravel-Project/public”> 
         AllowOverride all 
    </Directory>

私にとっての大きな落とし穴は、FTPがデフォルトで隠しファイルをコピーしないかもしれないことです:.env/public/.htaccessはそこにある必要があります!

上記のタスクを完了した後、Ubuntuサーバーで動作しました

2
John Wylie

マシンに requirements があることを確認してください。

  1. PHP> = 5.6.4
  2. OpenSSL PHP拡張
  3. PDO PHP拡張
  4. Mbstring PHP拡張
  5. トークナイザーPHP拡張
  6. XML PHP拡張

次に、プロジェクトをインストールまたは更新した後

作曲家の更新

この後、あなたは-

.env.example

複製を作成し、名前を変更してください-

.env

データベース構成または必要なその他の変更に応じて変更を加えます。

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=your db name
DB_USERNAME=username if any otherwise root
DB_PASSWORD= your password if not set leave blank

最後に、アプリケーションキーを生成します-

pHPアーティザンキー:生成

誰かにとっては最後のステップで十分かもしれません。しかし、laravelプロジェクトを複製するたびにこの問題が発生します。このステップ全体が、危険を伴います。

1

キーがbootstrap\cache\config.phpにキャッシュされていることを発見する前に、数時間この問題に悩まされていました。ファイルを削除し、私のサイトは正常にロードされました(つまり、no私の設定に問題がありました)。

これを発見したのは、boostrap\cache\compiled.phpにデバッグ出力を追加して、暗号とキー(7010行目付近)を吐き出すことです。次に、設定をどのように取得し、キャッシュ設定ファイルを使用しているのかを調べてみました。

1
Ciaran

"illuminate/html": "~5.0"を追加して、composer.jsonファイルのセクションを要求します。ちょうどこのような:

...
"require": {
    ...
    "illuminate/html": "~5.0"
    ...
},
...

次に、composer installコマンドを実行します。 composer installが完了すると。 php artisan key:generateを実行します。次のようなメッセージが表示されます。

Application key [get 32 char key] set successfully.
0
Ilyas karim