【问题标题】:laravel No supported encrypter found. The cipher and / or key length are invalidlaravel 找不到支持的加密器。密码和/或密钥长度无效
【发布时间】:2015-10-09 08:49:15
【问题描述】:

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

谁能帮忙解决这个错误?

【问题讨论】:

标签: php ssl laravel-5


【解决方案1】:

您只需在控制台中输入:

php artisan key:generate

如果您的 app.php 没有更改此 Key,请手动更改。


接下来,如果您碰巧收到此错误消息:

[错误异常]
file_get_contents(/path/to/my/project/.env): 无法打开流: 没有这样的文件或目录

然后复制.env.example 文件并重试:

cp .env.example .env
php artisan key:generate

【讨论】:

  • 并检查您是否安装了所有必要的扩展。
  • 在将 .env.example 复制到 .env 之前
【解决方案2】:

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

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

可能是您缺少 OpenSSL 扩展。另外,.env 文件中是否设置了密钥?


尝试运行:

php artisan key:generate


答案:'cipher' => '' 没有设置。

【讨论】:

  • .env value : APP_ENV=local APP_DEBUG=true APP_KEY=zK7sr9SzegGEDFClzJDs0vAkpO8NvjZA DB_HOST=localhost DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync MAIL_DRI MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null
  • 是你的'cipher' => 'AES-256-CBC'config/app.php
  • 并运行php artisan key:generate 生成新密钥。
  • @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() { route: :get('dashboard', function() { echo 'in dash'; }); }); }); ```
【解决方案3】:

我之前也遇到过同样的问题,我按照以下方式修复了它: 转到 config/app.php, 将 "cipher" => "anything" 更改为

'cipher' => MCRYPT_RIJNDAEL_128,

【讨论】:

  • 默认值为'cipher' => 'AES-256-CBC',,但这应该没有引号!!奇怪。
  • 这对我也有帮助,我在支持的密码列表中没有 AES-256-CBC,因为它来自 phpinfo()
【解决方案4】:

我通过运行这个来修复它:

php artisan config:cache

【讨论】:

  • 就我而言,我是第一次使用 Deployer。当我将项目符号链接到 /current 文件夹时,我收到了加密错误。创建缓存文件修复了它。
【解决方案5】:

我只是修复错误。

  1. Shift+Click 鼠标右键从您的根项目“在此处打开推荐窗口”。
  2. 在控制台中写入:"php artisan key:generate"
  3. 获取 32 个字符的 'Mark' 到 config/app.php like 'key' => env('APP_KEY', 'insert get 32 char key'),//第 81 行

【讨论】:

    【解决方案6】:

    就我而言,我需要启用 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
    

    【讨论】:

      【解决方案7】:

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

      【讨论】:

        【解决方案8】:

        写在控制台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 文件中。可以告诉我吗?
        • 首先,你在wamp server 中找到project folder,然后找到config 文件夹,然后你会得到app.php。谢谢
        【解决方案9】:

        解决了:

        php 工匠密钥:生成

        【讨论】:

          【解决方案10】:

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

          'key' = env('someRandom36CharsString'),
          

          'key' = 'someRandom36CharsString',
          

          【讨论】:

            【解决方案11】:

            我设法解决了部署到实时 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服务器上运行

            【讨论】:

              【解决方案12】:

              在我发现密钥被缓存在 bootstrap\cache\config.php 中之前,我被这个问题困扰了几个小时。删除了文件,我的网站加载正常(即我的配置没有没有问题)。

              我通过在 boostrap\cache\compiled.php 中添加一些调试输出以使其吐出密码和密钥(大约在第 7010 行附近)发现了这一点。然后四处挖掘,看看它是如何获取配置的,发现它使用了一个缓存配置文件。

              【讨论】:

                【解决方案13】:

                请确保您的机器中有这个requirements

                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 项目时都会遇到这个问题。这整个步骤使这有任何危险。

                【讨论】:

                  【解决方案14】:

                  "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.
                  

                  【讨论】:

                    【解决方案15】:

                    在一些旧版本的 laravel 中,您必须将 /config/app.php 中密码的默认值从“AES-256-CBC”更改为“AES-128-CBC”。

                    confing/app.php中的默认密码是“AES-256-CBC”,需要32个字符的字符串,而密码“AES-128-CBC”只需要16个字符。

                    输入php artisan key:generate 是最简单的解决方案。

                    新版本

                     'cipher' => 'AES-256-CBC',
                    

                    旧版本

                     'cipher' => 'AES-128-CBC',
                    

                    【讨论】:

                      猜你喜欢
                      • 2016-06-11
                      • 1970-01-01
                      • 2016-03-20
                      • 2018-06-18
                      • 1970-01-01
                      • 2016-03-26
                      • 1970-01-01
                      • 2021-06-17
                      • 1970-01-01
                      相关资源
                      最近更新 更多