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


83

Laravelを使用してプロジェクトを構築しています。ローカルホストでは正常に機能していましたが、サーバーにアップロードすると(サーバーに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

誰かがこのエラーを解決するのを手伝ってもらえますか?


私も今、この問題を持って、もっと最悪stackoverflow.com/questions/37505809/...
udemethegrtman

回答:


75

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

  • PHP> = 5.5.9
  • OpenSSLPHP拡張機能
  • PDOPHP拡張機能
  • MbstringPHP拡張機能
  • TokenizerPHP拡張機能

OpenSSL拡張機能が不足している可能性があります。また、.envファイルにキーセットがありますか?


実行してみてください:

php artisan key:generate


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


.env値:APP_ENV = local APP_DEBUG = true APP_KEY = zK7sr9SzegGEDFClzJDs0vAkpO8NvjZA DB_HOST = localhost DB_DATABASE = homestead DB_USERNAME = homestead DB_PASSWORD = secret CACHE_DRIVER = file SESSION_DRIVER = file QUEUE_DRIVER = null MAIL_ENCRYPTION = null
Rahman za

2
あなたの'cipher' => 'AES-256-CBC'中にいますconfig/app.php
Salkz 2015

33
そして、実行php artisan key:generateして新しいキーを生成します。
Salkz 2015

@Rahmanza私はそれらすべての拡張機能を持っており、暗号タイプを変更しphp artisan key:generate、問題の修正を試みていましたが、それは解決しません。私のルートはこれと関係がありますか: `` `Route :: group(['middleware' => ['web']]、function(){Route :: get( '/ login'、 'PublicController @ login' ); Route :: post( '/ login'、 'AuthenticationController @ login'); Route :: group(['prefix' => 'admin'、 'middleware' => 'auth']、function(){route: :get( 'dashboard'、function(){echo'in dash ';});});}); `` `
トム・バード

95

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

php artisan key:generate

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


次に、このエラーメッセージが表示された場合は、次のようにします。

[ErrorException] file_get_contents
(/path/to/my/project/.env):ストリームを開くことができませんでした:そのようなファイルまたはディレクトリはありません

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

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

2
そして、必要な拡張機能がすべてインストールされているかどうかを確認します。
Rafael Bugajewski 2015

2
.env.exampleを.envにコピーする前
Alex

9

私は前に同じ問題を持っていると私はそれがこのよう従って固定します。config / app.phpに移動し、変更"cipher" => "anything"します

'cipher' => MCRYPT_RIJNDAEL_128,

デフォルト値はです'cipher' => 'AES-256-CBC',が、これは引用符なしである必要があります!! 奇妙な。
ウェビナン2016

それは私にも役立ちました、AES-256-CBCそれが判明したので、私はサポートされている暗号のリストにありませんでしたphpinfo()
Yuriy Dyachkov 2016年

8

私はこれを実行することによってそれを修正しました:

php artisan config:cache

私の場合、Deployerを初めて使用しました。プロジェクトを/ currentフォルダーにシンボリックリンクしているときに、暗号化エラーが発生しました。キャッシュファイルを作成すると修正されました。
thomas_inckx

7

エラーを修正するだけです。

  1. Shift+Click ルートプロジェクトから「ここでコメントウィンドウを開く」ためにマウスを右に動かします。
  2. コンソールでの書き込み:"php artisan key:generate"
  3. config/app.php好きな32文字の「マーク」を取得'key' => env('APP_KEY', 'insert get 32 char key')、//行番号81

5

私の場合、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

5

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


4

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

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

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


申し訳ありませんが、WAMPを使用していconfig/app.phpますが、ファイルがどこにあるのかわかりません。教えていただけませんか?
ジュリアンモレノ2015年

1
最初に、あなたはあなたをproject folder中に入れwamp server、次にあなたはconfigフォルダを見つけ、そしてあなたは得るでしょうapp.php。ありがとう
Md Shahadat Hossain 2015


3

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

'key' = env('someRandom36CharsString'),

'key' = 'someRandom36CharsString',

2

ライブ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サーバーで動作しました


1

キーがbootstrap \ cache \ config.phpにキャッシュされていることに気付くまで、私はこの問題に数時間苦しんでいました。ファイルを削除し、私のサイトは正常にロードされました(つまり、それ以外の場合はありませんでした、設定に問題)。

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


1

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

  1. PHP> = 5.6.4
  2. OpenSSLPHP拡張機能
  3. PDOPHP拡張機能
  4. MbstringPHP拡張機能
  5. TokenizerPHP拡張機能
  6. XMLPHP拡張機能

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

作曲家のアップデート

この後あなたは持っています-

.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プロジェクトのクローンを作成するたびにこの問題が発生します。この全体のステップは、これを危険にさらします。


0

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

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

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

Application key [get 32 char key] set successfully.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.