如何打印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:
- 输出到一个网页(见dBug图书馆更好的观点)。
- 写入日志文件
- 在会话中用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);