Comment puis-je supprimer les données sensibles de la fonction debug_backtrace?

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

  •  27-09-2019
  •  | 
  •  

Question

J'utilise print_r (debug_backtrace (), true) pour récupérer une représentation de chaîne de la rétrospection de débogage. Cela fonctionne très bien, comme récursion poignées print_r.

Quand j'ai essayé d'itérer récursivement à travers le réseau de retour debug_backtrace () avant de le transformer en une chaîne, il a couru dans récursivité et n'a jamais pris fin.

Y at-il une façon simple, je peux supprimer certaines paires clé sensibles / valeur du tableau Backtrace? Peut-être un moyen de mettre le tableau à une chaîne à l'aide print_r, puis de nouveau à un tableau avec les emplacements récursives changé à la chaîne RECURSION , que je pouvais le itérer à travers.

Je ne veux pas d'exécuter des expressions régulières sur la représentation de chaîne, si possible.

Était-ce utile?

La solution

Aha ... compris que si je sérialiser le tableau de debug_backtrace puis immemdiately désérialisable, le tableau résultant manquent les références récursives du tableau d'origine et je peux en toute sécurité récursive itérer à travers elle.

$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);

recursive_sanitization_func($backtrace);

EDIT : D'accord, donc ce n'est pas une solution complète. Il fonctionne pour les références d'objets récursifs (ils sont perdus), mais pas pour les tableaux récursifs (ils sont conservés).

Ma solution actuelle est de linéariser / unserialize comme ci-dessus, puis exécutez le tableau résultant par une fonction de détection récursion telle que celle décrite ici: http://www.php.net/manual/en/ref.array.php#96914

Je souhaite qu'il y ait quelque chose de plus simple, mais cela me débrouille pour l'instant à moins que quelqu'un d'autre vient avec une meilleure solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top