话题还得从tinkPHP群消息说起,双十二那天,群内通知官方发布了5.0.13版本。刚好那几天在折腾redis缓存。官方文档中说5.0.13是一个集合诸多改进的版本,redis缓存驱动使用serialize替换了原先的json序列化。而博主的程序初始版本还是在5.0.10的基础上搭建了,后面在博客发布的时候更新到了5.0.11。想着官方已经发布了5.0.13,已经跨版了,就折腾起来。
折腾之前看了下官方升级指导,发现从5.0.11可以无缝升级的5.0.12,并且5.0.12可以无缝升级到5.0.13.所以也就信心满满的去折腾升级了,拷贝了下think核心中的success和error的跳转模版、paginate的分页类(被我修改过)。其它文件直接覆盖了。更新好以后就去点了几个页面,完全正常,添加了条测试信息也无误,也就直接更新到服务器上去了。
更新完成后,当我去写博客的更新日志的时候,问题来了,直接报错了个致命错误。
[8] ErrorException in Builder.php line 114
未定义数组下标: 0
未定义数组下标,当时没反应过来是我的待写入数据的问题,因为之前一直是正常的。也就没多想,就去看了下builder.php的源码,114行的代码就是官方更新日志里面关于inc和dec关键字修复的问题。和5.0.12版本对比发现也只是多了个switch判断。似乎问题也不在这里,这下就陷入了僵局。
因为是数组下标的问题。问题最大的可能还是出在我的应用层面上,和框架底层关系不大。没办法,只好从头检查了一遍应用逻辑,从前端表单开始,到后台接收。尝试静态写入数据,发现一切正常,只好打印了下input接收的数据。粗看之下没问题,