laravel找不到支持的encryption器。 密码和/或密钥长度是无效的
我正在使用Laravelbuild立一个项目。 它在本地主机上工作正常,但是当我上传到服务器(服务器已安装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 谁能帮助解决这个错误?
你有没有在服务器上安装所有必要的扩展?
- PHP> = 5.5.9
- OpenSSL PHP扩展
- PDO PHP扩展
- Mbstring PHP扩展
- Tokenizer PHP扩展
 这可能是你错过了OpenSSL扩展。 另外,你有.env文件中的密钥集? 
尝试运行:
 php artisan key:generate 
 答: 'cipher' => ''没有设置。 
您只能input控制台:
 php artisan key:generate 
如果你的app.php没有改变这个键,手动改变。
接下来,如果你应该碰巧得到这个错误消息:
[ErrorException]
file_get_contents(/path/to/my/project/.env):未能打开stream:没有这样的文件或目录
 然后复制.env.example文件.env.example试: 
 cp .env.example .env php artisan key:generate 
 我有同样的问题之前,我固定它遵循这种方式:去config / app.php,改变"cipher" => "anything" 
 'cipher' => MCRYPT_RIJNDAEL_128, 
我只是修复错误。
-   Shift+Click鼠标右键,在你的根项目中打开“在这里打开推荐窗口”。
-  在控制台中写入: "php artisan key:generate"。
-   (像'key' => env('APP_KEY', 'insert get 32 char key')//获得32个字符'Mark'到config/app.php,//第81行
 在根目录下,如果有.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 
解决:
PHP的工匠密钥:生成
我设法解决部署到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 /公共文件夹作为家:
 DocumentRoot /home/code2/public_html/Laravel-Project/public <Directory "/home/code2/public_html/Laravel-Project/public”> AllowOverride all </Directory> 
 主要是我的FTP是默认情况下不能复制隐藏的文件: .env和/public/.htaccess需要在那里! 
完成上述任务后,它在Ubuntu服务器上工作
我通过运行这个来修复它:
 php artisan config:cache 
在我发现密钥被caching在bootstrap \ cache \ config.php之前,我已经忍受了这个问题几个小时。 删除文件,我的网站加载好(即有没有问题,我的configuration)。
我发现通过添加一些debugging输出到boostrap \ cache \ compiled.php,使其吐出密码和密钥(在7010行左右的某处)。 然后挖掘,看看它是如何拿起configuration,并发现它使用cachingconfiguration文件。
 添加"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. 
请确保你的机器有这个要求 。
- PHP> = 5.6.4
- OpenSSL PHP扩展
- PDO PHP扩展
- Mbstring PHP扩展
- Tokenizer PHP扩展
- XML PHP扩展
然后安装或更新您的项目后
composer php更新
之后你有 –
.env.example
复制并重命名为 –
.ENV
并根据您的数据库configuration或您需要的任何其他修改进行更改。
 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项目时都会遇到这个问题。 这整个步骤使任何危险。