Laravel 5.4升级至5.5后出现Array to string转换错误求助
Laravel 5.4 升级至5.5后登录触发Array to string conversion错误的解决方法
这个错误的核心原因是加密Cookie时,尝试将字符串前缀与数组类型的Cookie值拼接,导致数组转字符串的类型错误,触发E_NOTICE报错。以下是具体的排查和解决步骤:
定位问题Cookie
先确认哪个Cookie的值是数组。通常是登录后设置的自定义Cookie,或者Session相关Cookie。可以通过浏览器开发者工具查看当前页面的Cookie列表,检查每个Cookie的内容类型。排除不需要加密的Cookie
如果该数组类型的Cookie不需要加密,直接在app/Http/Middleware/EncryptCookies.php的$except数组中添加对应的Cookie名称:protected $except = [ // 替换为你的目标Cookie名称,比如'login_user_info' 'login_user_info', ];将数组Cookie转为字符串存储
如果Cookie必须加密,需要在设置Cookie时将数组转为字符串格式(比如JSON序列化):// 设置Cookie时处理数组 $response->cookie('user_profile', json_encode($userProfileArray), 1440); // 读取Cookie时再解码 $userProfile = json_decode(request()->cookie('user_profile'), true);检查Session配置
若问题出在Session Cookie上,检查config/session.php中的配置:- 确保
driver设置正确(比如file、database等) - 确认没有自定义将数组直接存入Session的逻辑,必要时同样对Session中的数组值做序列化处理
- 确保
清理缓存与旧Cookie
最后执行以下命令清理Laravel缓存,并手动清除浏览器中的相关Cookie:php artisan cache:clear php artisan config:clear
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

