Проблема со странной сериализацией WordPress

#php #wordpress #serialization

#php #wordpress #сериализация

Вопрос:

Итак, у нас возникла эта странная ошибка WP, из-за которой правила перезаписи не выполняются должным образом только в нашей производственной среде. Во время отладки я обнаружил эту интересную проблему, которая, как мне кажется, может быть причиной.

 $serialized_value = maybe_serialize( $value, $option );

if ($option == 'rewrite_rules') {
    error_log(print_r($serialized_value,true));
}
  

Отображает что-то отличное от,

 $serialized_value = maybe_serialize( $value, $option );
if ($option == 'rewrite_rules') {
    print_r($serialized_value);
}
  

Версия error_log больше и соответствует правильной версии. Print_r меньше, не такой большой и имеет неправильную версию. Вот функция в WP, которая сериализует.

 function maybe_serialize( $data, $option ) {
if ( is_array( $data ) || is_object( $data ) ) {
        $newdata = serialize( $data );
        return $newdata;

}

// Double serialization is required for backward compatibility.
// See https://core.trac.wordpress.org/ticket/12930
// Also the world will end. See WP 3.6.1.
if ( is_serialized( $data, false ) )
    return serialize( $data );

return $data;
}
  

Почему это должно отображать что-то по-другому?

Комментарии:

1. все хорошо. Разобрался. Перезаписи фактически обновлялись 3 раза с 3 разными значениями. Print_r завершал процесс в первый раз, в error_log были все 3, и я пропустил их.