2010-07-25 46 views
22

我想将请求变量转储到文件进行调试。这可能怎么样?

回答

44
<?php 
$req_dump = print_r($_REQUEST, TRUE); 
$fp = fopen('request.log', 'a'); 
fwrite($fp, $req_dump); 
fclose($fp); 

未经测试但应该完成这项工作,只需将request.log更改为要写入的文件即可。

+1

微小微不足道的细节,但忘记关闭> – 2010-07-25 06:00:32

+18

结算>是没有必要的,在所有?。确实,在编写库/ etc(不是这里与此相关)时,最好的做法是忽略它,以确保不会意外输出可能混淆输出缓冲/标题/等的空白。 – 46bit 2010-07-25 06:04:49

+4

我个人喜欢'var_export($ var,true)'。 – Cole 2010-07-25 06:15:56

4

使用serialize()函数进行倾倒。分别转储$_SERVER,$_COOKIE,$_POST$_GET(可能会转到同一文件)。如果您打算使用数据进行调试,则有助于了解数据是否是POST请求或GET请求的一部分。

倾销一切对开发中的调试是有利的,但在生产中并非如此。如果你的应用程序没有很多用户,它也可以在生产环境中工作。如果您预计有许多用户,请考虑仅倾销$_POST数据,或将服务器变量限制为以HTTP_开头的那些变量。

7

我觉得现在这种方法更容易和更快:

$req_dump = print_r($_REQUEST, true); 
$fp = file_put_contents('request.log', $req_dump); 
+3

你可能想追加到日志: 'file_put_contents('request.log',$ req_dump,FILE_APPEND)' – jmb 2014-04-05 23:04:25