>백엔드 개발 >PHP 튜토리얼 >PHP生产环境的bug如何优雅地debug?

PHP生产环境的bug如何优雅地debug?

WBOY
WBOY원래의
2016-06-06 20:41:431909검색

一直很苦恼地一个问题,有些bug只能在生产环境中重现,但是我又不能在线上放置类似echo $test;之类地代码来调试,不知道大家有没有好地经验可以分享。

回复内容:

一直很苦恼地一个问题,有些bug只能在生产环境中重现,但是我又不能在线上放置类似echo $test;之类地代码来调试,不知道大家有没有好地经验可以分享。

使用 socketlog

生产环境热调试没什么不对的,但热调试过程中暴露代码逻辑和调试数据可是大大的作死。千万不能培养自己这个习惯。

正确的方法是使用monolog等日志工具,记录你希望跟踪的信息。你可以使用额外querystring等方法约束日志记录的行为。

当然也可以专门建立一个/test一类的测试路由,然后用权限控制禁止访客进入…不够优雅就是了。

trigger_error(var_export($var,true));
然后去php错误日志里面去查

你设置一个DEBUG_COOKIE=true, 然后要调试的时候改一下你浏览器的cookie..
然后你把调试输出放到日志文件里面,就能查看了. 而且不会影响外网的呈现.

类似于 飞侠 的答案,不过我使用的是

<code>error_log(var_export($data, true));
</code>

也可以修改该函数的第二个参数,将你要打印的信息写到指定的文件里。

最佳答案:php-console

https://github.com/barbushin/php-console

我常用做法可以就下面这样,当然里面的条件可变

<code class="lang-php">if ( 'debug' == $_GET['status'] ) {
    echo $test;
}
</code>

这样是有点困难。楼上的是好办法,还没用过

像一楼说的使用socketLog,xdebug,xhprof都不错的。

使用docker构建环境,使得本地开发调试拥有一个和服务器相同的环境,调试时连使用生产环境数据库的备份创建的测试数据库

ChromePHP::log();

自己写了一个日志记录的类,在需要调试的地方加日志代码,就可以了

线上的简单调试输出, 可以把信息输出到文件吧。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.