我试着给我发电子邮件debug_backtrace()
,但它只打印出数组。
我需要将它分配给一个变量,以便var_export可以使用它。
我怎么能这样做?
答案 0 :(得分:5)
有一个“打印出数组”的函数,debug_print_backtrace
。你有没有把这两个混在一起?
默认情况下,var_export()和print_r()都会打印结果。如果您希望它们返回结果,则必须将true
作为第二个参数传递(因此您可以将其分配给变量)
$result = var_export(debug_backtrace(), true);
答案 1 :(得分:3)
????
$var = debug_backtrace()
答案 2 :(得分:2)
debug_backtrace
返回数组,但不打印它。处理电子邮件报告的代码可能有问题。你能在这里粘贴那段代码吗?
答案 3 :(得分:2)
发送以下$ msg:
$msg = print_r( debug_backtrace( ) , true ) ;
未经测试,但这是一种方式。
答案 4 :(得分:2)
Debug Backtrace返回一个数组,因此你可以像任何数组一样处理它。例如:
$trace = debug_backtrace();
foreach ($trace as $i=>$t) {
$log .= $i .'=>'.$t['file'].' '.$t['line']."\n";
}
然后您可以通过电子邮件发送日志行。
答案 5 :(得分:1)
您可以使用print_r()将输出返回到变量并将其放入文件
$backtrace = debug_backtrace(true);
$dump = print_r($backtrace, true);
$f=fopen('export.txt','a');
fwrite($f, date("Y-m-d H:i:s")." ".$dump."\n");
fclose($f);
答案 6 :(得分:0)
我知道这已经过时了,但我发现自己遇到了同样的问题。我无法100%确认,但它似乎很可能与内存不足错误有关。
我的方案 - 在第三方提交失败时,发送包含调试信息的电子邮件(即代码失败的地方)。我也将$trace = debug_backtrace()
保存到变量中,然后使用var_export($trace, true)
将其嵌入到电子邮件中。我在CodeIgniter框架内和独立页面(遗留代码)上都使用了这个帮助函数。
回溯+导出代码在独立页面中工作正常,但在CodeIgniter中打印(部分)结果到屏幕。它实际上只是在切断线的中间之前打印了前两条迹线。
当我没有回显整个回溯时,我只打印了line,file,fn和args,一切正常。
我的猜测是,来自回溯的过多递归(通过CI对象行进)会导致内存耗尽,从而导致它将结果吐出来进行屏幕显示。