如何打印debugging日志?

我想debugging这个代码,但我猜“打印日志到屏幕或文件”对我来说很好。

我应该如何在php代码中打印日志? 通常的print/printf似乎转到HTML输出而不是控制台。

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

一个鲜为人知的技巧是mod_php将stderr映射到Apache日志。 而且,这里有一个stream,所以file_put_contents('php://stderr', print_r($foo, TRUE))很好地将$foo的值转储到Apache错误日志中。

 error_log(print_r($variable, TRUE)); 

可能是有用的

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

如果你在Linux上:

 file_put_contents('your_log_file', 'your_content'); 

要么

 error_log ('your_content', 3, 'your_log_file'); 

然后在控制台中

 tail -f your_log_file 

这将持续显示最后一行放在文件中。

你需要改变你的心态。 你正在写PHP,而不是你习惯写的东西。 在PHP中进行debugging不是在控制台环境中完成的。

在PHP中,您有三类debugging解决scheme:

  1. 输出到一个网页(见dBug图书馆更好的观点)。
  2. 写入日志文件
  3. 在会话中用xDebugdebugging

学会使用这些,而不是试图使PHP像你习惯的其他语言一样。

你在debugging台上debugging吗? debuggingPHP有多种select。 用于快速和脏debugging的最常用函数是var_dump 。

尽pipe如此,尽pipevar_dump非常棒,很多人都是这样做的,但还有其他的工具和技术可以使它变得更加有趣。

如果要在网页中进行debugging,可以使用dump语句来包装<pre> </pre>标签,以便为数组和对象提供适当的格式。

即:

 <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> 

最后但并非最不重要的一点是确保如果debugging你的error handling被设置为显示错误。 如果您无法访问服务器configuration,则可能需要在脚本的顶部添加此项。

 error_reporting(E_ALL); ini_set('display_errors', '1'); 

祝你好运!

如果你不想集成像Zend这样的框架,那么你可以使用trigger_error方法login到PHP错误日志。

简单的方法是trigger_error:

  trigger_error("My error"); 

但你不能把数组或对象,因此使用

 var_dump 

你可以使用php curl模块来调用http://liveoutput.com/ 。 这在一个安全的企业环境中很好,在php.ini中存在一些限制file_put_contents使用的限制。

这是一个伟大的工具,用于debugging和loggingphp: PHpdebugging器和logging器

它只需3行代码即可使用。 它可以将消息发送到js控制台进行ajaxdebugging,并可以replaceerror handling程序。 它还会转储有关var_dump()和print_r()等variables的信息,但其格式更易读。 非常好的工具!

我已经使用了其中许多,但是由于我通常需要在开发时进行debugging,而且由于我在本地主机上开发,所以我遵循其他人的build议,现在写入到浏览器的JavaScriptdebugging控制台(请参阅http://www.codeforest。净/debugging-php-in-browsers-javascript-console )。

这意味着我可以查看我的PHP在我的浏览器中生成的网页,并按F12快速显示/隐藏任何debugging跟踪。

因为我一直在寻找debugging器,CSS布局等开发工具,所以看看我的PHP对数是有道理的。

如果有人确定我们的代码,我做了一个小的改变。 后

function debug($name, $var = null, $type = LOG) {

我补充说

$name = 'PHP: ' . $name;

这是因为我的服务器端PHP生成HTML conatining JavaScript&我觉得有用区分输出从PHP和JS。

(注:我目前正在更新这个允许我打开和closures不同的输出types:从PHP,从JS和数据库访问)

我使用cakephp,所以我使用:

 $this->log(YOUR_STRING_GOES_HERE, 'debug'); 

你也可以这样写一个文件:

 $logFilePath = '../logs/debug.text'; ob_start(); // if you want to concatenate: if (file_exists($logFilePath)) { include($logFilePath); } // for timestamp $currentTime = date(DATE_RSS); // echo log statement(s) here echo "\n\n$currentTime - [log statement here]"; $logFile = fopen($logFilePath, 'w'); fwrite($logFile, ob_get_contents()); fclose($logFile); ob_end_flush(); 

确保正确的权限设置,以便PHP可以访问和写入文件( 775 )。

您可以使用

 <?php { AddLog("anypage.php","reason",ERR_ERROR); } ?> 

或者如果您想要在日志中打印您可以使用的语句

 AddLog("anypage.php","string: ".$string,ERR_DEBUG_LOW);