我希望 debug_print_backtrace 不打印敏感的函数参数。我的天真的解决方案不起作用。
<?php
function err ()
{
debug_print_backtrace ();
}
function foo ($secret_arg, $arg)
{
$arg = $secret_arg;
$secret_arg = "<HIDDEN>";
err ();
}
foo ("mysecret", 123);
?>
此输出
#0 err() called at [/tmp/x.php:13]
#1 foo(mysecret, 123) called at [/tmp/x.php:16]
即使我在函数中覆盖了 $secret_arg
,回溯显示它仍然包含 "mysecret"
。
但我确实仍然希望在跟踪中显示任何不 protected 参数。
是否有任何非 hacky 的方法可以从跟踪中隐藏此参数?从设计的角度来看,我真的希望函数能够在本地知道要保护哪些参数,而不是编写一个新的回溯函数来知道所有敏感参数在哪里。
最佳答案
从 PHP 5.3.6 开始,您可以简单地执行以下操作:
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
来自http://php.net/manual/en/function.debug-print-backtrace.php :
DEBUG_BACKTRACE_IGNORE_ARGS Whether or not to omit the "args" index, and thus all the function/method arguments, to save memory.
关于php - 如何从 php debug_print_backtrace 隐藏函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719174/