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, 

我只是修复错误。

  1. Shift+Click鼠标右键,在你的根项目中打开“在这里打开推荐窗口”。
  2. 在控制台中写入: "php artisan key:generate"
  3. (像'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. 

请确保你的机器有这个要求 。

  1. PHP> = 5.6.4
  2. OpenSSL PHP扩展
  3. PDO PHP扩展
  4. Mbstring PHP扩展
  5. Tokenizer PHP扩展
  6. 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项目时都会遇到这个问题。 这整个步骤使任何危险。