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
誰でもこのエラーを解決できますか?
サーバーに必要な拡張機能がすべてインストールされていますか?
OpenSSL拡張機能が欠落している可能性があります。また、.env
ファイルにキーが設定されていますか?
実行してみてください:
php artisan key:generate
回答:'cipher' => ''
が設定されていません。
コンソールで入力するだけです:
php artisan key:generate
App.phpでこのキーを変更しない場合は、手動で変更してください。
次に、このエラーメッセージが表示された場合:
[エラー例外]
file_get_contents(/path/to/my/project/.env):ストリームのオープンに失敗しました:そのようなファイルまたはディレクトリはありません
次に、.env.example
ファイルのコピーを作成して、再試行します。
cp .env.example .env
php artisan key:generate
以前にも同じ問題があり、この方法で修正しました:config/app.phpに移動し、"cipher" => "anything"
を変更します
'cipher' => MCRYPT_RIJNDAEL_128,
エラーを修正しました。
Shift+Click
マウスの右ボタンを押して、ルートプロジェクトから「commend window here」を開きます。"php artisan key:generate"
。'key' => env('APP_KEY', 'insert get 32 char key')
のようなconfig/app.php
に32文字の「マーク」を取得、//行番号81これを実行して修正しました:
php artisan config:cache
ルートディレクトリに.env.example
ファイルがある場合は、.env
に変更してからphp artisan key:generate
を実行します。これは私のために働いた。
私の場合、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
コンソールに書き込む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
のアプリキーを置き換えます
で解決:
pHPアーティザンキー:生成
.envファイルからキーを読み取る代わりにapp.php構成ファイルを使用している場合、キー変数のenv()関数を削除できます(例:
'key' = env('someRandom36CharsString'),
に
'key' = 'someRandom36CharsString',
ライブ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サーバーで動作しました
マシンに requirements があることを確認してください。
次に、プロジェクトをインストールまたは更新した後
作曲家の更新
この後、あなたは-
.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プロジェクトを複製するたびにこの問題が発生します。このステップ全体が、危険を伴います。
キーがbootstrap\cache\config.phpにキャッシュされていることを発見する前に、数時間この問題に悩まされていました。ファイルを削除し、私のサイトは正常にロードされました(つまり、no私の設定に問題がありました)。
これを発見したのは、boostrap\cache\compiled.phpにデバッグ出力を追加して、暗号とキー(7010行目付近)を吐き出すことです。次に、設定をどのように取得し、キャッシュ設定ファイルを使用しているのかを調べてみました。
"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.