laravel 지원되는 암호화기를 찾을 수 없습니다. 암호 및 / 또는 키 길이가 잘못되었습니다.


83

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

누구든지이 오류를 해결할 수 있습니까?


나도 지금이 문제가 있습니다. 더 최악의 stackoverflow.com/questions/37505809/…
udemethegrtman

답변:


77

필요한 모든 확장이 서버에 설치되어 있습니까?

  • PHP> = 5.5.9
  • OpenSSL PHP 확장
  • PDO PHP 확장
  • Mbstring PHP 확장
  • Tokenizer PHP 확장

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 = 파일 SESSION_525 MAIL_sync MAIL_DRIVER = smtp MAIL_USER = nullOST_DRIVER = sync MAIL_DRIVER = smtp 널 (null) MAIL_ENCRYPTION = NULL
라만 ZA

2
귀하 'cipher' => 'AES-256-CBC'config/app.php
Salkz

34
그리고 실행 php artisan key:generate하여 새 키를 생성하십시오.
Salkz

@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 () {경로 : : get ( 'dashboard', function () {echo 'in dash';});});}); ```
Tom Bird

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를하기 전에
알렉스

9

나는 전에 같은 문제가 있었고 다음과 같이 수정했습니다 : config / app.php로 이동 "cipher" => "anything"하여

'cipher' => MCRYPT_RIJNDAEL_128,

기본값은 'cipher' => 'AES-256-CBC',이지만 따옴표가 없어야합니다 !! 이상한.
Webinan

그게 내가 필요하지 않은, 나도 도움 AES-256-CBC이에서 밝혀졌다으로 지원되는 암호 목록에phpinfo()
YURIY Dyachkov

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파일 이 있는지 모르겠습니다 . 알려주 시겠어요?
Julian Moreno

1
첫째, 당신은 당신이 이동 project folderwamp 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. OpenSSL PHP 확장
  3. PDO PHP 확장
  4. Mbstring PHP 확장
  5. Tokenizer 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 프로젝트를 복제 할 때마다이 문제가 발생합니다. 이 모든 단계는 위험을 초래합니다.


0

파일의 "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.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.