Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从debug_backtrace函数中删除敏感数据?_Php_Debug Backtrace - Fatal编程技术网

Php 如何从debug_backtrace函数中删除敏感数据?

Php 如何从debug_backtrace函数中删除敏感数据?,php,debug-backtrace,Php,Debug Backtrace,我正在使用print_r(debug_backtrace(),true)检索调试回溯的字符串表示形式。这很好,因为print\r处理递归 当我尝试在将debug_backtrace()返回数组转换为字符串之前递归遍历它时,它进入了递归,并且从未结束 是否有一些简单的方法可以从回溯数组中删除某些敏感的键/值对?也许可以通过某种方式使用print\r将数组转换为字符串,然后返回到一个递归位置更改为字符串递归的数组,我可以对其进行迭代 如果可能的话,我不想在字符串表示上执行正则表达式。啊哈。。。我发现

我正在使用print_r(debug_backtrace(),true)检索调试回溯的字符串表示形式。这很好,因为print\r处理递归

当我尝试在将debug_backtrace()返回数组转换为字符串之前递归遍历它时,它进入了递归,并且从未结束

是否有一些简单的方法可以从回溯数组中删除某些敏感的键/值对?也许可以通过某种方式使用print\r将数组转换为字符串,然后返回到一个递归位置更改为字符串递归的数组,我可以对其进行迭代


如果可能的话,我不想在字符串表示上执行正则表达式。

啊哈。。。我发现,如果我序列化debug_backtrace数组,然后立即取消序列化,结果数组将缺少原始数组的递归引用,我可以安全地递归遍历它

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

recursive_sanitization_func($backtrace);
编辑:好的,这不是一个完整的解决方案。它适用于递归对象引用(它们丢失),但不适用于递归数组(它们保留)

我当前的解决方案是如上所述进行序列化/取消序列化,然后通过递归检测函数(如以下所述)运行生成的数组:


我希望有更直截了当的解决方案,但除非有人提出更好的解决方案,否则我现在只能这样做。

很有趣+一个有趣的解决方案。我花了几分钟思考了你的问题,但没有想到任何有用的东西。我仍在试图弄清楚为什么这样做有效,因为PHP手册建议应该保留递归引用:“你甚至可以序列化()包含自身引用的数组。也将存储正在序列化的数组/对象内的循环引用。任何其他引用都将丢失。“