A user was trying to install Laravel under WAMP and got the following error:
RuntimeException in compiled.php line 6904: No supported encrypter found. The cipher and / or key length are invalid.
Looking at the Laravel installation instructions, the only WampDeveloper specific change that would need to be done is to load the PHP sockets extension:
1. Open file C:\WampDeveloper\Config\Php\php.ini (via Notepad)
2. Find this line and uncomment it (remove front “;”) –
1 |
;extension=php_sockets.dll |
3. Save file. Restart Apache.
All the other Laravel required PHP extensions and Apache modules under WampDeveloper are loaded and enabled by default.
The above error seems to be Laravel-specific (rather than having something to do with WAMP) and here is how to fix it…
1. Make sure that in Laravel’s config\app.php file, the ‘cipher’ is defined as so:
1 |
'cipher' => 'AES-256-CBC', |
2. Make sure Laravel’s “.env” file exists. If this file does not exist, open the command-line (run cmd.exe), change the command-line’s “working directory” to Lavavel’s installed-to path, and create this file from the provided example template file:
1 2 3 |
C: cd \path\to\laravel\folder copy .env.example .env |
The first line (“C:”) changes to drive “C”, the second line changes to the path (on C)… substitute-in for your Laravel installed location. The third line makes a properly-named copy of the base example file. Because this file starts with a period, it’s much simpler to make a copy using the command-line (otherwise you’ll run into issues).
3. The cause of the issue is – the above cipher “AES-256-CBC” needs a 32 character key, but the default random key is only 16 characters long.
Generate a new 32 character string for the key by running (from cmd.exe):
1 |
php artisan key:generate |
The command should automatically update the app.php file (and also the .env file) with a new proper-size key, and output something similar to this afterwards:
1 |
Application key [g8MOZ9dYU4ap5F12m95PIPAA5AJG3Sh6] set successfully. |
4. Verify that the above key is now in Laravel’s .env file:
1 |
APP_KEY=g8MOZ9dYU4ap5F12m95PIPAA5AJG3Sh6 |
If it’s not, manually add it in as shown above (substitute in your key, and without the brackets).
* On another unrelated but similar cause, if this is happening sometime after a successful installation – after your app is fully installed and running – then it is possible that the APP_KEY was changed and now the encrypted data cannot be decrypted. In this case, unless you can revert to the previous key, you’ll have to either delete the encrypted data or start over.