# PHP项目迁移部署错误



\*\*Claravel上传到线上出现The cipher and / or key length are invalid 的Bug调试\*\*

laravel5项目最近在本地都没有错误，但是上传到线上出现错误。     具体错误信息：

```html
No supported encrypter found. The cipher and / or key length are invalid.
```

在config/app.php的配置里

```php
'key'             => env('APP_KEY'),
'cipher'          => 'AES-256-CBC',
```

在.env里的 **APP\_KEY=base64:/Y1/uU5a9UeZyCzD9MavRtEiZnMjfHaZ3/2PnsPMJAo=** 也是存在的。

对应的key与cipher 都存在了，可是就是出现上面的错误。

经过调试后，发现是读.env的key时失效了，读出来的**null**

解决办法就是

1、**先把 .env里的APP\_KEY的字符串删了，重新生成KEY，在项目根目录下操作**

```bash
php artisan key:generate
```

生成的KEY会自动补到.env里的APP\_KEY里。config/app.php的配置里的key与cipher不需要改动。   2、**因为是env失效，所以接下来你要做的是清除缓存，重新来过**

```bash
php artisan config:clear
php artisan config:cache
```

具体为什么要清除缓存，可以网上查找其底层机制。

如果上面的处理扔没有效果，那很有可能是你的php.ini里开启了**putenv**函数，这种情况在宝塔环境中经常出现。

解决的办法，如果发现php.ini里有开启putenv函数，请删除掉。

3、 **重启一下服务 nginx、php-fpm**

以上我是调试成功了，希望也能帮助到你吧！

### 迁移服务器，解决PHP队列问题

> 迁移完服务器之后，当php与nginx、redis运行正常，但是执行任务一直卡着不动

```bash
php artisan command:cale
```

### 迁移服务器后，解决 debug 关闭失效无法关闭问题

> 底层逻辑： 清除缓存，重新加载配置

```bash
php artisan config:clear
```
