<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post/5477/</link>
<title><![CDATA[php 调试利器debug_print_backtrace()和过滤掉上传图片的二进制数据]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Thu, 09 Aug 2012 05:20:37 +0000</pubDate> 
<guid>http://jackxiang.com/post/5477/</guid> 
<description>
<![CDATA[ 
	如果我们想知道某个方法被谁调用了? debug_print_backtrace可以解决<br/>debug_print_backtrace() 可以打印出一个页面的调用过程 , 从哪儿来到哪儿去一目了然. <br/>不过这是一个PHP5的专有函数,好在pear中已经有了实现, <br/><br/>PHP debug_backtrace() 函数生成一个 backtrace。<br/>该函数返回一个关联数组。下面是可能返回的元素：<br/>名称&nbsp;&nbsp;类型&nbsp;&nbsp;描述<br/>function&nbsp;&nbsp;字符串&nbsp;&nbsp;当前的函数名。<br/>line&nbsp;&nbsp;整数&nbsp;&nbsp;当前的行号。<br/>file&nbsp;&nbsp;字符串&nbsp;&nbsp;当前的文件名。<br/>class&nbsp;&nbsp;字符串&nbsp;&nbsp;当前的类名<br/>object&nbsp;&nbsp;对象&nbsp;&nbsp;当前对象。<br/>type&nbsp;&nbsp;字符串&nbsp;&nbsp;当前的调用类型，可能的调用：<br/>返回: &quot;-&gt;&quot;&nbsp;&nbsp;- 方法调用<br/>返回: &quot;::&quot;&nbsp;&nbsp;- 静态方法调用<br/>返回 nothing - 函数调用<br/>args&nbsp;&nbsp;数组&nbsp;&nbsp;如果在函数中，列出函数参数。如果在被引用的文件中，列出被引用的文件名。<br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
function one($str1, $str2)
&#123;
&nbsp;&nbsp;two(&quot;Glenn&quot;, &quot;Quagmire&quot;);
&#125;
function two($str1, $str2)
&#123;
&nbsp;&nbsp;three(&quot;Cleveland&quot;, &quot;Brown&quot;);
&#125;
function three($str1, $str2)
&#123;
&nbsp;&nbsp;print_r(debug_backtrace());
&#125;
one(&quot;Peter&quot;, &quot;Griffin&quot;);
?&gt;
</textarea><br/><br/><br/><br/>如何从PHP的debug_backtrace结果中移除二进制数据？<br/>在调试代码的时候我一般用debug_backtrace()函数来打出错误的堆栈信息，但是如果遇到文件上传或者图片上传的错误时，它会把文件或者图片的二进制信息都打出来。如下所示：<br/><textarea name="code" class="php" rows="15" cols="100">
array (
0 =&gt; 256,
1 =&gt; &#039;Image_upload_error&#039;,
2 =&gt; &#039;/htdocs/www/image_upload.php&#039;,
3 =&gt; 95,
4 =&gt;
array (
 &#039;prefix&#039; =&gt; &#039;&#039;,
 &#039;fieldName&#039; =&gt; &#039;test.png&#039;,
 &#039;sBlobData&#039; =&gt; &#039;&lt;89&gt;PNG^M
^Z
&#039; . &quot;&#92;0&quot; . &#039;&#039; . &quot;&#92;0&quot; . &#039;&#039; . &quot;&#92;0&quot; . &#039;^MIHDR&#039; . &quot;&#92;0&quot; . &#039;&#039; . &quot;&#92;0&quot; . &#039;&#039; ....
)
)
</textarea><br/>这样很影响错误信息的查看。不知道有没有方法可以将这些二进制数据屏蔽呢？<br/><br/>@可以对debug_backtrace()进行封装一下，将不需要的字段过滤掉就好了，以下是我稍微封装了一下，你可以看看。<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
test();
function test()&#123;
two();
&#125;
function two()&#123;
var_dump(debugBackTrace(array(&#039;file&#039;)));
&#125;

/**
* 封装后的debugBackTrace()
* @param $filters array&nbsp;&nbsp;需要过滤的键值
* @return array 
*/
function debugBackTrace($filters = array())&#123;
$debug = debug_backtrace();
$result = $debug;
if(!empty($debug) &amp;&amp; !empty($filters))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;foreach($debug as $k =&gt; $arr)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach($filters as $filter)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(array_key_exists($filter, $arr))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset($result[$k][$filter]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125;
return $result;
&#125;
?&gt;
</textarea>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post/5477/#blogcomment63797</link>
<title><![CDATA[[评论] php 调试利器debug_print_backtrace()和过滤掉上传图片的二进制数据]]></title> 
<author>hxngb2of &lt;seju235@domozmail.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 25 Aug 2012 16:55:27 +0000</pubDate> 
<guid>http://jackxiang.com/post/5477/#blogcomment63797</guid> 
<description>
<![CDATA[ 
	支持楼主，长见识了
]]>
</description>
</item><item>
<link>http://jackxiang.com/post/5477/#blogcomment63814</link>
<title><![CDATA[[评论] php 调试利器debug_print_backtrace()和过滤掉上传图片的二进制数据]]></title> 
<author>joixsee04zx &lt;kaximaasahi@gmail.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Wed, 31 Oct 2012 13:30:56 +0000</pubDate> 
<guid>http://jackxiang.com/post/5477/#blogcomment63814</guid> 
<description>
<![CDATA[ 
	只有楼主这样具备广阔胸怀和完整知识体系的人，才能作为这真理的惟一引言者。看了楼主的帖子，我陷入了严肃的思考中。强力灌水啊~~不能沉啊~~
]]>
</description>
</item>
</channel>
</rss>