此篇笔记主要用于记录我遇到的各种问题,会不定时更新,希望对后来人有那么一点用。
PHP7 已经发布的一段时间了,已经有不少大型系统升级到了 PHP7,并且给出了良好的反馈。而我们公司的线上版本现在还停留在 5.3,实在是跟不上时代啊,作为一个略有极客精神的程序员,我向上边极力推荐升级,主管也同意了(好吧,其实公司的 PHP 开发就我和主管俩人)。所以我最近把我的开发机的环境升级到了 PHP7.0.4,想现在本机运行开发一段时间,找找看有没有什么我们系统踩到的坑(虽然各界对 PHP7 的反响良好,连微博这种大架构都表示没遇到坑,但我还是小心为妙)。
mcrypt_decrypt()
这个坑属于 PHP 5.6,根据官方文档,加密Key(也就是第二个参数)的长度只能是 16,24 or 32.
PHP 5.6.0 不再接受无效长度的 key and iv 参数。 如果参数长度无效,则 mcrypt_decrypt() 函数会产生警告并且返回 FALSE。 之前版本中,对于长度不足的密钥和初始向量会在其后补齐 '\0' 使其达到有效长度。
Error
PHP7 多了一个基础错误类,就叫 Error(具体用法请自行查阅官方文档),按理说没啥问题,但是,我们系统中已经有一个叫 Error 的类,所以就日了狗了,刚升级上去的时候直接报错,我查了半个小时才查出来(好吧,其实我没有好好听鸟哥的讲座,写完马上恶补去)。所以如果你的代码中也有一个叫 Error 的类的话,请马上换名字,然后全局替换。
igbinary 扩展
很不幸,PHP7 的扩展还没有完全跟上,像这个大家用 memcache 时都会用到的pecl,目前就还没有提供 PHP7 的支持(目前最高版本号是1.2.1,支持到5.6),虽然没有它并不是不能使用 memcache,但是,还是希望这个扩展能及早跟上,毕竟大家一直在用,突然换了序列化方式,不知道会遇到什么样的坑。
(待续……)