【问题标题】:No supported encrypter found. The cipher and / or key length are invalid未找到支持的加密器。密码和/或密钥长度无效
【发布时间】:2016-03-20 10:01:57
【问题描述】:

很多人都有同样的问题。但是,我的问题在这里有所不同,这不是 StackOverFlow 上的任何重复问题。

我的 Laravel 5.1 应用程序在我的本地主机上运行良好。但是,当我在生产服务器上设置它时,我得到的第一个错误是没有找到支持的加密器。但是,如果我运行php artisan key:generate,那么一切都很好。但这就是我不想做的事情,因为其他人可能不具备命令行界面的技能。因此,我将config/app.php 中的'cipher' => 'AES-256-CBC', 替换为MCRYPT_RIJNDAEL_128,从而解决了这个问题。但是,我不知道这样做有什么负面影响。有什么建议可以让我通过标准方式实现我想要的吗?

【问题讨论】:

  • 您只需要运行一次php artisan key:generate,而且只有在您设置新环境的情况下。我不知道我是否遵循您对其他人不知道如何使用 CLI 的担忧。你能把你的问题说清楚一点吗?
  • 我只想给我想要的应用程序文件夹,他们只能将其上传到他们的服务器,一切都应该很好。这就是我想要的。
  • 嗯...我明白了。您是否使用git 或其他一些 SCM 来管理此项目?
  • 是的,我正在使用git
  • 我相信您是在告诉它使用 PHP 的 mcrypt 扩展而不是 OpenSSL。 Many people think this is a bad idea。不过我之前没有使用过这个框架,所以可能是错误的。

标签: php encryption laravel-5.1


【解决方案1】:

唯一需要手动调用php artisan key:generate 的情况是将此项目移至新环境(例如开发或生产服务器)时。您必须这样做的原因是默认.gitignore 文件的内容如下所示:

/vendor
/node_modules
.env

推送到新环境的此项目的副本将不包括 .env,它的密钥为 APP_KEY=YourRandomKey 以及 DB_PASSWORDMAIL_PASSWORD 等。基本上所有你会保密的东西并允许新的环境管理员通过编辑 推送的.env.example 文件进行配置。

如果您想在项目的每个副本中推送这些配置变量,您可以,但我会强烈建议不要这样做。

如果您从.gitignore 文件中删除.env,则.env 文件将被推送到您的存储库并包含在任何git cloneed 项目中。

基本上,您项目的每个副本都将具有相同的APP_KEY 变量,但它也会暴露您的DB_PASSWORD,以及在.env 中找到的所有其他敏感数据。基本上,有一种方法可以实现您使用 Laravel 获得的安全级别,但为了实现这一目标,您将安全性抛到了窗外......

希望这能提供一些见解。

【讨论】:

  • 我遇到了同样的错误,尝试了原始海报所做的一切,但仍未解决问题。我在每台服务器上单独处理所有配置文件和 .env 变量,并使用php artisan key:generate 替换了 .env 和 config/app.php 但仍然没有为我修复它。你会不会有其他的想法?我在 Amazon EC2 实例上运行 Ubuntu,我已经坚持了很长一段时间
猜你喜欢
  • 2018-06-18
  • 1970-01-01
  • 2015-10-09
  • 2016-06-11
  • 2016-03-26
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多