Ich möchte Debug_print_backtrace druckempfindliche Argumente nicht drucken. Meine naive Lösung funktioniert nicht.Wie kann ich Funktionsargumente von PHP ausblenden debug_print_backtrace
<?php
function err()
{
debug_print_backtrace();
}
function foo ($secret_arg, $arg)
{
$arg = $secret_arg;
$secret_arg = "<HIDDEN>";
err();
}
foo ("mysecret", 123);
?>
Diese gibt
#0 err() called at [/tmp/x.php:13]
#1 foo(mysecret, 123) called at [/tmp/x.php:16]
Auch wenn ich $secret_arg
in der Funktion überschrieben, zeigt das Backtrace es "mysecret"
noch enthält.
Aber ich DO immer noch wollen nicht geschützte Argumente in der Ablaufverfolgung angezeigt werden.
Gibt es nicht-hacky Möglichkeiten, dieses Argument von der Ablaufverfolgung zu verbergen? Vom Entwurf her möchte ich, dass die Funktionen lokal wissen, welche Argumente geschützt werden sollen, anstatt eine neue Backtrace-Funktion zu schreiben, die weiß, wo sich alle sensiblen Argumente befinden.
Ich möchte die Argumente behalten, nur verstecken * einige * von ihnen. – spraff
Gotcha, kein Problem; Siehe meine 2. Antwort. –