php debug
1. 内置的API输出
echo/print
echo的速度较快, 且可以输出逗号分隔的多个变量
printf/sprintf/vprintf
用户格式化的一些输出或得到返回值
print_r/var_dump(var_export)/debug_zval_dump/debug_print_backtrace
输出数组,var_export输出的数组可以直接复制,debug_zval_dump包含引用次数,debug_print_backtrace可以让我们查看整个程序的调用栈,用来查看瞬间函数调用栈,方便在出错时查看执行上下文,不需要参数,直接调用
2. 错误选择控制和日志记录调试
Php.ini 配置中,跟错误相关的选项主要:error_reporting、display_errors、log_errors、error_log 等几个,这些选项在一般语法级别的调试是很有帮助的。
display_errors 是设定是否在PHP脚本执行输出的时候输出错误信息,一般在线下开发调试环境,为了便于调试,会打开错误显示选项,在线上为了不泄露敏感信息,一般会吧 display_errors 设置为Off。如果线上报错了,我们如何查看到错误?那么就需要 log_errors 选项了。这个选项是设定是否记录错误日志,以及error_log指明日志的路径。
错误抛出和处理,主要是说我们在程序中能够自己触发错误,或者自己截获处理错误,类似 throw catch机制。
trigger_error, set_error_handler, set_exception_handle这三个api就是处理错误抛出和处理内置函数。
trigger_error可以触发一个错误,触发基本跟上文的error_reporting设定的级别一直,主要是能够触发E_USER_ERROR,
E_USER_WARNING, E_USER_NOTICE三种级别的错误,如果不做处理,程序执行就会报错,错误类似于error_reporting,但是页面不能显示,但是cli执行可以显示。
set_error_handler 说我们发生了错误的时候,用什么处理函数来处理,一般这个都是用来针对 trigger_error 之后来进行错误处理的,两个函数结合,我们可以构建一个简单有效的错误识别和记录的功能。会传递参数errno errstr errfile errline
Set_exception_handler 跟 set_error_handler 类似,不过 Set_exception_handler 是用来处理出现未捕获的异常之后需要调用的处理方法。
日志记录除了PHP解析级别的错误,更多是我们程序在执行过程中的一些错误,比如 文件资源打开错误(文件不存在、没有权限、文件格式不正确)、远程服务资源访问失败(网络不通、协议不正确、用户名密码错误)等等,要知道,任何你认为不会出错的地方都可能隐藏着错误,所以务必多多的输出Log。
可以写一个简单的日志记录类,其实就是记到不同的文件中。
写log大抵都是几个常用的文件操作API,比如 fopen/fwrite,或者是一步到位的 file_put_contents。另外,PHP为了便于写日志,还提供了一个专门的接口:error_log
3. 浏览器调试
如果Web前端调试来说,Firebug是不可或缺好的调试工具,它能够监控网络、监测css、js错误,查看DOM节点,FirePHP是一个附加在 firebug 上面的插件,用来调试PHP,操作过程很简单。在PHP端使用FirePHP提供的PHP日志记录类库来输出调试信息, 在浏览器端使用 Firebug + FirePHP 来接收查看输出的调试信息,这些调试信息会直接附加在返回的HTTP头信息里,这些信息不会被浏览器直接显示,只会在firephp 获取显示,有效的达到了调试和页面显示都不冲突的问题。(必须使用firefox浏览器)。要在服务器端部署FirePHPCore文件,然后就可以调用提供的方法,在header中输出一些变量,可以有各种group,table和展现效果(warn info error)。可以查看trac, exception。参考http://www.firephp.org/HQ/Use.htm了解更多信息
4. IDE调试
zend支持本地调试,设置断点,步步跟踪,同时可以安装zend Debugger 进行远程调试。
ZendDebugger 是一个Zend扩展,通过跟IDE进行通信来达到设置断点和调试的目的。基本工作原理是:IDE 会设置监听一个调试端口,在调试的时候设置一个远程Web服务器地址,调试的时候触发URL信息,通知调试器 ZendDebugger 来访问 IDE 开放的调试端口,双方连接上以后,开始互相依靠传递消息来进行调试工作,知道调试完成,网路连接断开。但对基于ZendFramework的程序似乎不太管用,zf内嵌了zend_debug,或许可以看一下。
5. APD(Advanced PHP Debugger)
......
6. 使用Xhprof 进行性能分析
.....

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...
