Come posso rimuovere i dati sensibili dalla funzione debug_backtrace?
-
27-09-2019 - |
Domanda
Sto usando print_r (debug_backtrace (), true) per recuperare una rappresentazione di stringa del backtrace di debug. Questo funziona bene, come le maniglie print_r ricorsione.
Quando ho provato a ricorsivamente scorrere la matrice di ritorno debug_backtrace () prima di trasformarlo in una stringa che ha incontrato la ricorsione e mai terminato.
C'è un modo semplice posso rimuovere alcune coppie chiave / valore sensibili dalla matrice backtrace? Forse un modo per girare l'array in una stringa utilizzando print_r, poi di nuovo a un array con le posizioni ricorsive cambiato alla stringa Ricorsione , che ho potuto l'Scorrere.
Non voglio eseguire le espressioni regolari sulla rappresentazione di stringa, se possibile.
Soluzione
Aha ... capito che se ho serializzare la matrice debug_backtrace e poi immemdiately unserialize esso, l'array risultante mancheranno i riferimenti ricorsivi della matrice originale e posso tranquillamente ricorsivamente iterare attraverso di essa.
$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);
recursive_sanitization_func($backtrace);
Modifica : Okay, quindi questa non è una soluzione completa. Si lavora per gli oggetti ricorsivi riferimenti (sono persi), ma non per gli array ricorsivi (sono mantenuti).
mia soluzione attuale è di serializzare / unserialize come sopra, e quindi eseguire la matrice risultante attraverso una funzione di rilevamento ricorsione come quello descritto qui: http://www.php.net/manual/en/ref.array.php#96914
Vorrei che ci fosse qualcosa di più semplice, ma questo mi è sempre da per ora a meno che qualcun altro esce con una soluzione migliore.