Вы здесь
Drupal. Ошибка unserialize() в /includes/bootstrap.inc
пт, 03.06.2011 - 15:45 - krak
tags:
На сервере, где был установлен Drupal 6.x, в лог messages валились ошибки вида
drupal: PHP Notice: unserialize() [function.unserialize]: Error at offset 194 of 197 bytes in /home/drupal/includes/bootstrap.inc on line 555
Для исправления ошибки, вернее для анализа ее возникновения, необходимо:
- Активировать модуль PHP Filter, идущий в уомплекте с самим Drupal'ом
- Создать новый блок, выбрать тип форматирования PHP, вставить в него код
<?php
$serialized_false = serialize(FALSE);
$result = db_query('SELECT * FROM {variable}');
while ($variable = db_fetch_object($result)) {
$variables[$variable->name] = @unserialize($variable->value);
if ($variables[$variable->name] === FALSE && $variable->value !== $serialized_false) {
print "<hr/>Unserialize Error for variable:". $variable->name . '='. $variables[$variable->name] . "<br/>". $variable->value;
}
}
?> - Установить вывод этого блока только для администраторов и выбрать регион, в котором его отображать (мне было проще его вывести в подвал).
- Те переменные, которые я догадался за что отвечают, настроил в админке, остальные - удалил напрямую в базе данных в таблице variable
- После того как в блоке перестались выводится ошибки необходимо удалить блок. Отключить модуль PHP filter.
Код подчерпнул с сайта drupal.org.