PHP unserialize():偏移量处出错
我对Drupal 6.20有问题 可能是在PHP更新之后,站点停止工作。我得到:PHP unserialize():偏移量处出错,php,drupal,serialization,drupal-6,Php,Drupal,Serialization,Drupal 6,我对Drupal 6.20有问题 可能是在PHP更新之后,站点停止工作。我得到: Notice: unserialize() [function.unserialize]: Error at offset 0 of 22765 bytes in /PATH/includes/cache.inc on line 33 这是一行: $cache->data = unserialize($cache->data); 如果有任何帮助,我将不胜感激。请尝试var\u转储($cache->d
Notice: unserialize() [function.unserialize]: Error at offset 0 of 22765 bytes in /PATH/includes/cache.inc on line 33
这是一行:
$cache->data = unserialize($cache->data);
如果有任何帮助,我将不胜感激。请尝试
var\u转储($cache->data)
。这可能是因为PHP添加了转义序列和/或引号,这是由于magic quotes或类似的原因。听起来您的Drupal缓存已经损坏
立即的解决办法是清除缓存。清除Drupal缓存的三种方法:
另外,您还提到了一个PHP更新:请告诉我们您使用了哪些版本的PHP。PHP5.3中的一些Drupal6模块存在已知的问题,尽管内核确实支持它。有关更多信息,请参阅。当您在PostgreSQL 9.0上运行Drupal 6.x时,会出现此问题,因为bytea类型已被修改。
这里有一些建议的解决方案:-(喜欢Wayback机器) 在数据库上运行此操作将修复此问题:
ALTER DATABASE databasename SET bytea_output='escape';
这可能是因为阵列中的数据不正确,您可以这样修复它:
$data= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $cache->data );
$s_data= unserialize($data);
我得到一个随机的字母/数字序列,用(它是一个很长的字符串):string(22765)“x613,它以:3b7d”结尾。据我所知,任何序列化数据都以“
X:n
”形式开始(以;
或}
”结尾),其中X
是类型,n
是长度。示例a:1
,i:123
。显然,$cache->data
值是完全错误的。你应该检查数据来自哪里。这是来自数据库吗?在升级过程中,序列化字符串中可能出现了一些附加字符。正如@Udo G所说,最好将var\u dump($cache->data)
的结果发布到这里。请看:你所说的一切都做了,但没有起作用。每次单击链接之前,我都必须删除缓存,但在optins中,缓存被禁用。此外,还有许多与psql相关的错误。。。