drupal - 注意 Drupal 中的 : unserialize() [function. 反序列化]

标签 drupal drupal-6 error-handling

我的 Drupal 站点页面上方出现此错误:

Notice: unserialize() [function.unserialize]: Error at offset 0 of 32 bytes in C:\xampp\htdocs\irbid\includes\bootstrap.inc on line 559

此错误是什么意思,我该如何解决?

最佳答案

这是由变量表中的损坏条目引起的。该表的值是一个序列化的 php 值。

有关什么是序列化值的更多信息,请参阅:

基本上,如果其中一个值被手动更改,它可能会导致类似这样的事情。

例如匿名变量的默认值为:

+-----------+------------------+
| name      | value            |
+-----------+------------------+
| anonymous | s:9:"Anonymous"; |
+-----------+------------------+

如果将值更改为 s:9:"Some other value"; 那么这将导致问题。 第一个字符是值的类型。值 s 表示字符串。然后冒号后跟数字表示长度。在这种情况下,单词 Anonymous 正好是 9 个字符。但是 Some other value 有超过 9 个字符。该值中有 16 个字符,因此正确的方法是 s:16:"Some other value";

如果有人将值未序列化(没有 s:9:"";),那么它也会导致此问题。

我以前也遇到过这个问题。我添加了一些调试代码以找出导致此问题的变量。我添加了这样的内容:

$value = unserialize($variable->value);
if ($value === FALSE) {
    watchdog('unserialize', $variable->name);
}

我将此代码放在导致错误的行之前,然后我再次生成错误,然后我转到 Drupal admin http://yoursite.com/admin/reports 中的“最近的日志条目”/dblog 并按 unserialize 类型过滤。

一旦我有了变量的名称,我就会连接到数据库并执行此查询:

SELECT * FROM variable WHERE name='name-goes-here';

然后我把我在日志中找到的名字。 我查看该值并找出导致此错误的原因,然后修复该值。

希望对您有所帮助。

关于drupal - 注意 Drupal 中的 : unserialize() [function. 反序列化],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684366/

相关文章:

php - 在 hook_views_query_alter() 中添加 JOIN 语句

drupal - 如何在我的 drupal 应用程序的每个页面中添加元关键字标签?

php - 当数据库中没有匹配的数据时,回显错误null

drupal - Ubercart 3 (Drupal 7) 的多币种

Jquery 或 CSS 将鼠标悬停在图像上并在 Drupal View 中显示图像

jquery - Drupal可拖动 block 问题

php - PHP-错误ASCII = 16状态= 0输入中出现意外字符

ajax - SELECT2 ajax - 预加载选项

php - drupal数据库结构..无法获取它

scala - 从选项转换为尝试