【问题标题】:How can I find out the value of a variable while writing PHP code (for debugging)?如何在编写 PHP 代码(用于调试)时找出变量的值?
【发布时间】:2013-02-28 22:31:23
【问题描述】:

我正在使用 symfony 进行写作,并且在 actions.class.php 文件之一中。

通常我只会echo 变量的值,但因为这是一个动作类模块,我不能这样做,因为我不能输出到页面。

我正在考虑使用 FirePHP,但它涉及在服务器端安装它,我想知道一个更简单或内置的解决方案。

【问题讨论】:

  • 是否可以回显变量,然后使用退出?
  • 这似乎只是导致页面空白。
  • 很脏,很乱,但给自己发电子邮件也行。
  • @SchautDollar:哈.. 是的,这可能行得通。
  • @SchautDollar:实际上,给自己发电子邮件非常有效。一行代码,它立即发送。

标签: php debugging symfony-1.4


【解决方案1】:

电子邮件日志确实有效,但有一些更好、更简单、更快捷的方法;)

在 symfony 中,您可以访问 Logger,这将允许您记录任何内容。在 prod 环境中默认是禁用的(当然你可以打开它),但在 dev 中它不仅在日志文件中可用,而且在 Sf Web 调试栏中打印。

在动作中使用:

$this->getLogger()->debug('My $variable value is now: '.$variable);

您还可以使用其他级别的日志记录(->warning('')->err('')->crit('') 等)。当然,如果是数组或对象,则需要将变量更改为字符串。

事实上,您可以在操作中使用echovar_dump。它们将显示在您的页面中(尽管在实际模板之前显示内容时布局很混乱)。

请记住,echo 仅适用于字符串和数字。如果您尝试回显布尔值或数组,您将什么也看不到。如果你尝试回显一个对象,它将使用__toString() 方法或引发错误。

【讨论】:

  • 你应该提到它取决于环境的日志配置(prod/dev/cache/etc ...)。有时,在 prod 环境中不允许记录(甚至是 err 或 crit)。
【解决方案2】:

在整个代码中给自己发电子邮件。您可以在脚本末尾或整个过程中发送一个。两者都有好处。如果您没有收到电子邮件,通过电子邮件发送整个过程很容易让您知道哪里出了问题,并且最后发送电子邮件可以节省开销(不过,这似乎不是问题)。

【讨论】:

    【解决方案3】:

    如果您有权访问服务器的日志文件,您可能需要查看 PHP 的 error_log 函数。它将在 PHP 的错误日志中打印一个字符串,然后您可以检查日志文件。

    -edit-: error_log 还允许您通过电子邮件向自己发送消息。但这很愚蠢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2019-08-08
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多