Переход на PHP7 - перестала работать "собака"

  • Автор темы Автор темы Alina
  • Дата начала Дата начала

Alina

Новичок
Ситуация следующая - на dev сайте сисадмин проапгрейдил версию php до 7.0 (nginx + php-fpm). Принципиальных изменений в подключенных модулях не было.
После обновления собаки (@) перестали выполнять свою функцию подавления предупреждений. Xdebug я уже отключила, это не спасло. Scream не подключен.
У меня огромная куча legacy-кода, на переписывание времени пока не выделить.

PS Гуглила. Ничего релевантного не нашла.
 
У вас админ всегда ставит End-of-life версию? Давите ошибки через настройку error_reporting или пишите что-то типа кастомного обработчика ошибок.
 
Телепаты подсказывают, что в коде есть set_error_handler, и в коллбэке некорректная проверка на "собаку".

Как это делать правильно - см. первый пример https://php.net/set_error_handler
 
Давите ошибки через настройку error_reporting
На продакшене так и сделано. А вот на деве хотелось бы сохранить отображение.

Телепаты подсказывают, что в коде есть set_error_handler, и в коллбэке некорректная проверка на "собаку".
Возможно, проверю. Код не мой, его очень много, весь не просматривала еще. Спасибо за наводку.
 
Собаку вообще не надо использовать. Чтобы заглушить проблему в одном месте, можно поставить свой set_error_handler, но обязательно восстановить его перед выходом из функции.
 
Собаку вообще не надо использовать. Чтобы заглушить проблему в одном месте, можно поставить свой set_error_handler, но обязательно восстановить его перед выходом из функции.
Спасибо, конечно, за совет. Я б с радостью.
 
Ииии?
В чём сложность написать в нужном месте
PHP:
      set_error_handler(function($s, $m, $f, $l, $c = null) { throw new BadStuff($m, 0, $s, $f, $l); });
      try
      {
        // stuff
      }
      catch(BadStuff $e)
      {
        // Deal with bad stuff
      }
      finally
      {
        restore_error_handler();
      }
    }
 
Наверное, в том, что таких мест 100500, и это древнее легаси, которое даже открывать страшно?
 
Сверху