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

Alina

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

PS Гуглила. Ничего релевантного не нашла.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У вас админ всегда ставит End-of-life версию? Давите ошибки через настройку error_reporting или пишите что-то типа кастомного обработчика ошибок.
 

fixxxer

К.О.
Партнер клуба
Телепаты подсказывают, что в коде есть set_error_handler, и в коллбэке некорректная проверка на "собаку".

Как это делать правильно - см. первый пример https://php.net/set_error_handler
 

Alina

Новичок
Давите ошибки через настройку error_reporting
На продакшене так и сделано. А вот на деве хотелось бы сохранить отображение.

Телепаты подсказывают, что в коде есть set_error_handler, и в коллбэке некорректная проверка на "собаку".
Возможно, проверю. Код не мой, его очень много, весь не просматривала еще. Спасибо за наводку.
 

AnrDaemon

Продвинутый новичок
Собаку вообще не надо использовать. Чтобы заглушить проблему в одном месте, можно поставить свой set_error_handler, но обязательно восстановить его перед выходом из функции.
 

Alina

Новичок
Собаку вообще не надо использовать. Чтобы заглушить проблему в одном месте, можно поставить свой set_error_handler, но обязательно восстановить его перед выходом из функции.
Спасибо, конечно, за совет. Я б с радостью.
 

AnrDaemon

Продвинутый новичок
Ииии?
В чём сложность написать в нужном месте
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();
      }
    }
 

fixxxer

К.О.
Партнер клуба
Наверное, в том, что таких мест 100500, и это древнее легаси, которое даже открывать страшно?
 
Сверху