debug_backtrace関数から機密データを削除するにはどうすればよいですか?
-
27-09-2019 - |
質問
print_r(debug_backtrace()、true)を使用して、デバッグバックトレースの文字列表現を取得しています。 print_rが再帰を処理するため、これは正常に機能します。
debug_backtrace()を介して再帰的に反復しようとしたときに、弦に変換する前に配列を返します。
バックトレースアレイから特定の機密キー/バリューペアを削除できる簡単な方法はありますか?おそらく、Arrayをprint_rを使用して文字列に変換し、再帰的な場所が文字列に変更された配列に戻る方法 再帰, 、それを繰り返すことができました。
可能であれば、文字列表現で正規表現を実行したくありません。
解決
aha ... debug_backtraceアレイをシリアル化してから、それを一見してから無視すると、結果のアレイには元の配列の再帰的参照がなく、安全に再帰的に反復することができることがわかりました。
$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);
recursive_sanitization_func($backtrace);
編集: :さて、これは完全な解決策ではありません。再帰オブジェクトの参照(紛失)で機能しますが、再帰配列(保持されます)では機能しません。
私の現在の解決策は、上記のようにシリアル化/非透過化し、次のような再帰検出関数を介して結果の配列を実行することです。 http://www.php.net/manual/en/ref.array.php#96914
もっと簡単なものがあったらいいのにと思いますが、他の誰かがより良い解決策を思いついていない限り、これは今のところ私を手に入れています。
所属していません StackOverflow