我对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);
我将不胜感激。
答案 0 :(得分:12)
当您在PostgreSQL 9.0上运行Drupal 6.x时会发生此问题,因为bytea类型已被修改。
这里有一些建议的解决方案:http://postgresql.1045698.n5.nabble.com/Bytea-error-in-PostgreSQL-9-0-td3304087.html - (喜欢Wayback Machine)
在数据库上运行它应修复它:
ALTER DATABASE databasename SET bytea_output='escape';
答案 1 :(得分:4)
听起来你的Drupal缓存已经损坏了。
立即解决方案是清除缓存。清除Drupal缓存的三种方法:
使用管理员密码登录该站点,然后从菜单中选择flush caches选项。如果您可以首先进入该网站,这显然是可能的。
如果你不能这样做,你可以使用Drush命令行工具来冲洗现金,而不必去网站。
如果你甚至不能让Drush工作(或者你只是不想安装它),你可以通过你最喜欢的MySQL工具中的数据库手动完成,并清空所有名称以“cache _”开头的表。
真正的问题是为什么会发生这种情况。可悲的是,如果没有很多关于你的设置的更多信息(并且可能花一些时间进行调查),我无法回答这个问题。
危险在于,即使您清除了缓存,也会再次发生同样的错误,所以即使您再次使用它,最好还是稍微挖一下,看看能不能找到找出根本原因。
我的猜测是一个胭脂模块,它有一个错误已经将错误的数据写入缓存。您可能需要检查drupal站点和Google以检查您正在使用的模块,以查看是否有任何报告过相似行为的模块。
另外,您提到了PHP更新:请告诉我们您来自哪个版本的PHP。 PHP 5.3中的一些Drupal 6模块存在已知问题,尽管核心确实支持它。有关详细信息,请参阅http://drupal.org/requirements。
答案 2 :(得分:0)
尝试var_dump($cache->data)
。可能是由于魔术引号或类似原因,PHP正在添加转义序列和/或引号。
答案 3 :(得分:0)
可能是因为数组中的数据不好,你可以像这样解决它:
$data= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $cache->data );
$s_data= unserialize($data);