debug_backtrace関数から機密データを削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2654223

  •  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

もっと簡単なものがあったらいいのにと思いますが、他の誰かがより良い解決策を思いついていない限り、これは今のところ私を手に入れています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top