Как в PHP узнать строку, на которой прервалось исполнение
При работе со старым кодом иногда очень сложно найти место, на котором прервалось исполнение. Конструкции типу die, exit и т.д. - очень плохая практика, но много легаси кода (и не только - я ничего плохого не говорю о Wordpress, так что молчу) ими злоупотребляют. Одна из самых больших проблем подобных конструкций - то, что их сложно найти и отладить. (Используйте exception!)
Но когда все же стоит задача найти место, где прерывается исполнение кода, можно воспользоваться следующим сниппетом:
<?php
function shutdown_find_exit()
{
file_put_contents(
__DIR__ . '/tmp/' . uniqid('', true) . '.dump',
var_export($GLOBALS['dbg_stack'], true)
);
}
register_shutdown_function('shutdown_find_exit');
function write_dbg_stack()
{
$GLOBALS['dbg_stack'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
}
register_tick_function('write_dbg_stack');
declare(ticks=1);
Этот код стоит поместить в самом начале фронт-контроллера (или скрипта). На каждом тике он записывает backtrace, и в случае прерывания исполнения все записывает в файл tmp/uniq_name (если нужно - поменяйте название), который позже можно проанализировать.