如何打印调试日志?

eug*_*ene 120 php debugging logging

我想调试一些PHP代码,但我想打印日志到屏幕或文件对我来说很好.

我应该如何在PHP代码中打印日志?

通常print/ printf似乎转到HTML输出而不是控制台.

我有Apache服务器执行PHP代码.

chx*_*chx 180

一个鲜为人知的技巧是mod_php将stderr映射到Apache日志.并且,有一个流,因此file_put_contents('php://stderr', print_r($foo, TRUE))很好地将值转储$foo到Apache错误日志中.

  • +1我花了太长时间才找到这个答案.这就是我真正想要的.我无法弄清楚如何查看我的数组包含的内容(在Drupal中工作). (4认同)

小智 133

error_log(print_r($variable, TRUE)); 
Run Code Online (Sandbox Code Playgroud)

可能有用

  • 不幸的是,这是最方便的解决方案。Xdebug一直都在运行。为你投票 (2认同)

小智 25

您可以使用error_log将错误日志文件发送到您的服务器(如果您愿意,可以使用可选的其他文件)


use*_*507 20

如果你在Linux上:

file_put_contents('your_log_file', 'your_content');
Run Code Online (Sandbox Code Playgroud)

要么

error_log ('your_content', 3, 'your_log_file');
Run Code Online (Sandbox Code Playgroud)

然后在控制台中

tail -f your_log_file
Run Code Online (Sandbox Code Playgroud)

这将连续显示放入文件的最后一行.


Syl*_*rag 9

你需要改变自己的思维方式.您正在编写PHP,而不是您以前编写的任何其他内容.PHP中的调试不是在控制台环境中完成的.

在PHP中,您有3类调试解决方案:

  1. 输出到网页(请参阅dBug库以获得更好的视图).
  2. 写入日志文件
  3. 在使用xDebug进行会话调试时

学习使用它们而不是试图使PHP的行为与您习惯的其他语言一样.

  • 作为一个花费大量时间编写控制台应用程序和各种_non web_Script的人,我会礼貌地不同意这一点. (31认同)

ste*_*lin 5

你在控制台上调试吗?调试PHP有各种选项.用于快速和脏调试的最常用函数是var_dump.

尽管如此,虽然var_dump很棒,而且很多人只是用它来做所有事情,但还有其他的工具和技术可以让它更有趣.

如果在网页中进行调试,请在<pre> </pre>dump语句周围包装 标记以便为数组和对象提供正确的格式.

即:

<div> some html code ....
      <a href="<?php $tpl->link;?>">some link to test</a>
</div>

      dump $tpl like this:

    <pre><?php var_dump($tpl); ?></pre>
Run Code Online (Sandbox Code Playgroud)

并且,最后但并非最不重要的是确保调试错误处理是否设置为显示错误.如果您无法访问服务器配置,则可能需要在脚本顶部添加此项.

error_reporting(E_ALL);
ini_set('display_errors', '1');
Run Code Online (Sandbox Code Playgroud)

祝好运!