Como posso remover dados confidenciais da função Debug_backtrace?
-
27-09-2019 - |
Pergunta
Estou usando print_r (debug_backtrace (), true) para recuperar uma representação de string do backtrace de depuração. Isso funciona bem, pois o print_r lida com a recursão.
Quando tentei itera recursivamente através da matriz de retorno deBug_backtrace () antes de transformá -la em uma corda, ela correu em recursão e nunca terminou.
Existe alguma maneira simples de remover certos pares de chave/valor sensíveis da matriz de backtrace? Talvez uma maneira de transformar a matriz para uma string usando print_r, em seguida, volte para uma matriz com os locais recursivos alterados para a string RECURSÃO, o que eu poderia iterar.
Não quero executar expressões regulares na representação da string, se possível.
Solução
AHA ... descobriu que, se eu serializou a matriz Debug_backtrace e, em seguida, impecialmente a não emitir, a matriz resultante não terá as referências recursivas da matriz original e posso itera recursivamente com segurança.
$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);
recursive_sanitization_func($backtrace);
EDITAR: Ok, então esta não é uma solução completa. Funciona para referências de objetos recursivos (eles são perdidos), mas não para matrizes recursivas (elas são mantidas).
Minha solução atual é serializar/não-narizar como acima e, em seguida, executar a matriz resultante através de uma função de detecção de recursão, como a descrita aqui: http://www.php.net/manual/en/ref.array.php#96914
Eu gostaria que houvesse algo mais direto, mas isso está me levando por enquanto, a menos que alguém tenha uma solução melhor.