我和Laravel 5.3(在Windows服务器上)有同样的问题.我做了所有可能的尝试:检查.env文件,配置,工匠新密钥生成,缓存:清除,配置:清除,编写器更新,但问题随机持续存在.
请注意,具有完全相同版本的apache,mysql,php的相同代码不会在Mac OS上生成此问题.
我发现密钥(加密器约束器的第一个参数)到达"有时"是空的,当然它失败了.大多数情况下密钥是正确的,但随机密钥从EncryptionServiceProvider到达为空,然后再将其询问应用程序配置.
因此,对我有用的唯一解决方案是if ($key)在EncryptionServiceProvider中添加一个,以便不使用空键调用加密构造函数.
当然不是一个"干净"的解决方案,也没有解释问题,但至少避免找到填充错误的日志文件:
RuntimeException:唯一支持的密码是AES-128-CBC和AES-256-CBC,页面显示正确.
如果这是一个我不知道的Laravel bug,但当然如果有人可以解释这一点,我会更乐意知道.
下面是我修改过的类:我if ($key)之前添加了以下行new Encrypter:
class EncryptionServiceProvider extends ServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->singleton('encrypter', function ($app) {
$config = $app->make('config')->get('app');
// If the key starts with "base64:", we will need to decode the key before handing
// it off to the encrypter. Keys may be base-64 encoded for presentation and we …Run Code Online (Sandbox Code Playgroud)