+ -
当前位置:首页 → 问答吧 → 关于多语言时 unserialize() 错误的解决方法

关于多语言时 unserialize() 错误的解决方法

时间:2010-08-24

来源:互联网

TP2 在多语言配置时,会将语言配置保存为cookie,内容如下:
APPNAME_think_language
s%3A5%3A%22zh-cn%22%3B

在核心缓存文件中 unserialize($_cookie[$name]) 处报错,也就是调试器报的错。
网上查了一下,应该是cookie内容不合法的问题,在unserialize反序列化cookie时用stripslashes处理一下即可解决。
现在问题是:直接修改缓存runtime文件debug就不会报错了,但是此方法是不可行的,要修改缓存文件生成器才能解决问题。
跟踪了一下,只要修改 THINKPHP/COMMON/FUNCTIONS.PHP第869行,将unserialize($_COOKIE[$name])改为unserialize(stripslashes($_COOKIE[$name])),删除~runtime.php,即可搞定。

作者: cuizhen7   发布时间: 2010-08-24

不错,如果多语言的网站是用linux的主机话,会出现?l='zh-tw',不能转换的问题,用楼主的方法,可能解决了,谢谢!

作者: winds_ha   发布时间: 2011-04-03