Сериализация

Статус
В этой теме нельзя размещать новые ответы.

artefakt777

Постоялец
Регистрация
15 Июл 2012
Сообщения
537
Реакции
141
Приветствую! Имеется вот такой код, где разработчики заглушили вывод ошибок собачкой (@), но при переносе на другой хостинг, ошибки все равно начало выводить.

Собственно, как можно по другому заглушить эти ошибки, спасибо.

Код:
 $sContentUn = (!empty($sContent) ? @unserialize($sContent) : false);
        if (is_array($sContentUn)) # un-сериализация прошла успешно
        {
            $sContent = $sContentUn;
        } else if (!empty($sContent) && mb_stripos($sContent, ':{')!==false) {
            # пытаемся починить сериализованные данные
            $sContent = strtr($sContent, array("\r\n"=>"\n","\n"=>"\r\n")); // LF (Unix) => CRLF (Windows)
            $sContentUn = @unserialize($sContent);
            if (!is_array($sContentUn)) {
                $sContent = preg_replace_callback('!s:(\d+):"(.*?)";!', function($match) {
                    return ($match[1] == strlen($match[2])) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';
                }, $sContent);
                $sContentUn = @unserialize($sContent);
            }
            if (is_array($sContentUn)) {
                $sContent = $sContentUn;
            }
        }
 
1 Что за ошибка?
2 На какую строчку кода она выпадает?
 
1 Что за ошибка?
2 На какую строчку кода она выпадает?

Ошибка следующая:
Код:
unserialize(): Error at offset 487 of 868 bytes
*/bff/modules/sendmail/base.php [127]

127 строка:
$sContentUn = (!empty($sContent) ? @unserialize($sContent) : false);

Но тем не менее все функции работают и данные отправляются нормально.
 
PHP:
try {
    $sContentUn = unserialize($sContent);
}
catch (Exception $ex) {
    $sContentUn = null;
}
 
Чтобы просто заглушить вывод ошибок в самом начале скрипта после <?php можно написать
Код:
ini_set("display_errors", 0);
или поправить эту настройку в php.ini
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху