Я попытался отправить мне по электронной почте debug_backtrace()
но он просто распечатывает массив. Мне нужно назначить его переменной, чтобы var_export мог работать с ней. Как я могу это сделать?
Отправьте следующие $ msg:
$msg = print_r( debug_backtrace( ) , true ) ;
Не проверено, но это один из способов.
Существует функция, которая «распечатывает массив», debug_print_backtrace
. Вы случайно не смешали этих двух?
И как var_export (), так и print_r () по умолчанию печатает результат. Вы должны передать true
как второй параметр, если хотите, чтобы они вернули результат (чтобы вы могли назначить его переменной)
$result = var_export(debug_backtrace(), true);
????
$var = debug_backtrace()
debug_backtrace
возвращает массив, но не печатает его. Вероятно, что-то не так с кодом, который обрабатывает отправку по электронной почте отчета. Не могли бы вы вставить этот фрагмент кода здесь?
Debug Backtrace возвращает массив, чтобы вы могли обрабатывать его, как любой массив. Например :
$trace = debug_backtrace(); foreach ($trace as $i=>$t) { $log .= $i .'=>'.$t['file'].' '.$t['line']."\n"; }
то вы можете написать себе строку журнала.
вы можете использовать print_r (), чтобы вернуть результат в переменную и поместить ее в файл
$backtrace = debug_backtrace(true); $dump = print_r($backtrace, true); $f=fopen('export.txt','a'); fwrite($f, date("Ymd H:i:s")." ".$dump."\n"); fclose($f);
Я знаю, что это старо, но я столкнулся с той же проблемой. Я не могу подтвердить 100%, но кажется очень вероятным, что это связано с ошибкой вне памяти.
Мой сценарий – при сбое подачи сторонних сообщений отправьте электронное письмо с информацией об отладке (а именно, где код не сработал). Я тоже $trace = debug_backtrace()
для переменной, а затем позже использовал var_export($trace, true)
чтобы вставить его в электронное письмо. Я использую эту вспомогательную функцию как внутри рамки CodeIgniter, так и на отдельной странице (устаревший код).
Код backtrace + export работал нормально на отдельной странице, но печатал (частично) результаты на экране, когда в CodeIgniter. На самом деле он только напечатал первые 2 следа, прежде чем отрезать середину линии.
Когда вместо того, чтобы повторять всю обратную трассировку, я печатал только строки, файлы, fn и args, все работало нормально.
Я предполагаю, что слишком много рекурсии из backtrace (поход через объекты CI) сдуло память, что заставило ее вырвать результаты на экран.