laravel找不到支持的加密器。密码和/或密钥长度无效

时间:2015-07-20 09:27:27

标签: php ssl laravel-5

我正在使用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

有人可以帮忙解决这个错误吗?

13 个答案:

答案 0 :(得分:93)

您只需键入控制台:

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

答案 1 :(得分:64)

您是否在服务器上安装了所有必要的扩展程序?

  • PHP> = 5.5.9
  • OpenSSL PHP扩展
  • PDO PHP Extension
  • Mbstring PHP扩展
  • Tokenizer PHP扩展

可能是你错过了OpenSSL扩展。此外,您是否在.env文件中设置了密钥?

尝试跑步:

php artisan key:generate

答案:'cipher' => ''未设置。

答案 2 :(得分:9)

之前我遇到过同样的问题,我按照这种方式解决了这个问题: 转到config / app.php, 将"cipher" => "anything"更改为

'cipher' => MCRYPT_RIJNDAEL_128,

答案 3 :(得分:7)

我只是修正错误。

  1. Shift+Click右键点击"打开推荐窗口"来自你的根项目。
  2. 在控制台中写:"php artisan key:generate"
  3. 获得32个角色' Mark'至config/app.php,如'key' => env('APP_KEY', 'insert get 32 char key'),//第81行

答案 4 :(得分:6)

我通过运行它来修复它:

php artisan config:cache

答案 5 :(得分:5)

在根目录中,如果有.env.example个文件,则将其更改为.env,然后运行php artisan key:generate。这对我有用。

答案 6 :(得分:4)

就我而言,我需要启用mcrypt扩展。

但首先,检查一下你是否已经拥有它:

$ sudo apt-get install -y mcrypt php5-mcrypt

检查是否加载了mcrypt模块:

$ php -m | grep mcrypt

如果没有显示,是因为没有加载,但你已经安装在上面了吗?所以这样做:

$ php5enmod mcrypt
$ sudo service apache2 restart

再次检查,你应该看到mcrypt而不是什么。这是一个好兆头,重新加载你的app并修复你的下一个错误;)

$ php -m | grep mcrypt
mcrypt

答案 7 :(得分:4)

解决了:

php artisan key:generate

答案 8 :(得分:3)

如果你使用app.php配置文件而不是从.env文件中读取密钥,那么你可以删除关键变量的env()函数,例如:

sp.func1()

WITH cte as (
      SELECT *,
             ROW_NUMBER() OVER (Partition BY timeStamp, fieldValue, prevValue) as rn
      FROM YourTable
)
SELECT *
FROM cte
WHERE rn = 1

答案 9 :(得分: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服务器上运行

答案 10 :(得分:1)

在我发现密钥被缓存在bootstrap \ cache \ config.php之前的几个小时里,我遇到了这个问题。删除了文件,我的网站加载得很好(即我的配置有其他没有问题)。

我通过向boostrap \ cache \ compiled.php添加一些调试输出来发现这一点,使其吐出密码和密钥(在7010行左右)。然后挖掘看看它是如何获取配置并发现它使用缓存配置文件。

答案 11 :(得分:1)

请确保您的计算机中有requirements

  1. PHP&gt; = 5.6.4
  2. OpenSSL PHP扩展
  3. PDO PHP Extension
  4. Mbstring PHP扩展
  5. Tokenizer PHP扩展
  6. XML PHP扩展
  7. 然后按

    安装或更新项目
      

    作曲家更新

    在此之后你有 -

      

    .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 artisan key:generate

    对于有人可能只是最后一步就足够了。但是每次克隆任何laravel项目时我都会遇到这个问题。整个步骤使这有任何危险。

答案 12 :(得分:0)

composer.json添加到... "require": { ... "illuminate/html": "~5.0" ... }, ... 文件的要求部分。就像这样:

composer install

然后运行composer install命令。当php artisan key:generate完成时。运行Application key [get 32 char key] set successfully. 。您将收到如下消息:

AccessModifierOffset: -4
IndentWidth:     8