6

假设我有 2 个页面:index.php 和 service.php

index.php 向 service.php 发送一个 http-post,其中包含每 5 分钟一次的日期戳。

我将如何调试 service.php 上的 post 变量?显然我不能只做一个

if(isset($_POST['key'])) { 
    var_dump($_POST['key']); 
} 

因为当我进入页面时它不会存在。

在 ASP.NET 中,我只会创建一个断点,但我将如何检查 php 中发布的数据?

谢谢

4

5 回答 5

10

使用(使用当前以避免覆盖)将$_POST数组的状态保存到文件中,并稍后检查文件。var_exporttime()

file_put_contents( 'debug' . time() . '.log', var_export( $_POST, true));
于 2012-06-19T20:58:29.743 回答
5

var_dump您可以使用or输出 post 的值print_r,我不理解您为什么说“不能”

事实上,有几种方法可以调试发布数据:

  • TamperData - 拦截和更改表单发布数据

  • HttpFox - 调试 http 请求

  • 您还可以使用 Firebug,它是一款出色的通用调试工具。使用“网络”面板,可以调试发送的帖子数据和服务器的输出:

    Firebug - 通用开发工具。

  • Firebug 本身有扩展;有一个名为FirePHP的工具可以让您将调试数据跟踪到 Firebug 控制台。我个人在设置 FirePHP 时运气不佳,但我也没有提出过认真的尝试。

  • 您还可以使用内置工具:Chrome ( )F12或 Firefox ( CTRL++ SHIFT)K

  • error_log使用以下命令将调试数据记录到错误日志中:

    error_log("\n".serialize($_POST), 3, "/var/tmp/my-errors.log");

文档

PHP 的 var_dump - http://php.net/manual/en/function.var-dump.php

PHP 的 print_r - http://php.net/manual/en/function.print-r.php

PHP 的 error_log - http://php.net/manual/en/function.error-log.php

使用 FirePHP 讨论 Firebug 的文章 - http://sixrevisions.com/web-development/how-to-debug-php-using-firefox-with-firephp/

于 2012-06-19T21:04:10.850 回答
1

您可以使用print_r以人类可读的方式检查数据。

echo '<pre>';
print_r($_POST);
于 2012-06-19T20:57:46.577 回答
1

由于您正在响应服务器上另一个 PHP 脚本发出的内部请求,因此您有多种选择:将其记录到syslog、将其记录到您自己的日志文件或数据库中,或者在某处发送邮件。

于 2012-06-19T20:59:17.887 回答
0

对于 php(适用于许多 IDE,但是您需要配置特定的 IDE)可以使用xdebug设置断点并检查您的变量

于 2012-06-19T20:59:41.633 回答