我现在正在使用这个:
error_log(serialize(debug_backtrace()));
但我每次都必须反序列化它。有没有更好的方法来存储回溯?
我现在正在使用这个:
error_log(serialize(debug_backtrace()));
但我每次都必须反序列化它。有没有更好的方法来存储回溯?
这应该生成一个可读的字符串:
error_log(print_r(debug_backtrace(), true));
此外,debug_print_backtrace()将回溯打印为字符串,并且可以使用常规输出缓冲区函数捕获其输出:
ob_start();
debug_print_backtrace();
error_log(ob_get_clean());
从我的角度来看,最好的方法是使用异常功能:
$e = new Exception();
$e->getTraceAsString();
$log = var_export(debug_backtrace(), true);
然后使用该变量$log
登录文件或其他任何内容。
有点难看但可行,我这样做:
error_log('Identifying string so that it doesn\'t just end up as gibberish' . json_encode(debug_backtrace()));
对于那些可能想要更紧凑版本的人来说,这也可以解决问题:
error_log((new Exception())->getTraceAsString())
以下内容可以写入 .txt 文件,也可以访问它的内容(如 $content[0]),而不是 var_export,我发现这有点棘手:
$content = unserialize(serialize(debug_backtrace()));