错误和异常错误php程序自身的问题,一般是由非法的语法,环境问题导致 异常一般是业务逻辑上出现的不合预期、与正常流程不同的状况,不是语法错误 错误异常继承关系小括号表示php版本 php7下的常见错误异常类型
错误和异常的有关主要配置log_errors //开启记录错误日志display_errors //是否在页面展示错误日志error_reporting //错误级别error_log 如果该配置没有设置,则错误信息会被发送到 SAPI 错误记录器。 例如,出现nginx的错误日志中,或者在CLI中发送到 stderr 配置优先级别fpm>ini>nginx 错误/异常有关处理函数https://www./manual/zh/ref.errorfunc.php set_exception_handler在exception_handler 调用后异常会中止 set_error_handler以下级别的错误不能由用户定义的函数来处理,独立于发生错误的地方: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,和在 调用 set_error_handler() 函数所在文件中产生的大多数 E_STRICT handler里error_types 里指定的错误类型都会绕过 PHP 标准错误处理程序, 除非回调函数返回了 false register_shutdown_function不影响error_log的行为,可以多个 Yii里的异常和错误处理
常见的查错去哪找日志,陌生的项目怎么快速的找到日志1.去error_log文件找(php-fpm.conf→php.ini→nginx的error_log) 一定要注意日志文件的权限(fpm 的worker进程是否可写) 不找日志,重置错误处理不想管自定义的错误处理 error_reporting(E_ALL);ini_set("display_errors","On");restore_exception_handler();restore_error_handler(); 常用调试基本简单的调试var_dump(),print_r(),var_export() Yii框架的帮助函数 比如 yii\helpers\VarDumper::dump/dumpAsString()); 调用栈追踪1. 其它工具Yii的debugger tool为了调试方便对其他人不产生影响,可使用种cookie方式开启(外加ip白名单)方式,比较适合yii混编的页面调试 辅助配套的cookie-editor插件 https://chrome.google.com/webstore/detail/cookie-editor/iphcomljdfghbkdcfndaijbokpgddeno?hl=zh-CN whoops(类似yii debugger tool)
chrome控制台https://github.com/ccampbell/chromephp 页面有刷新跳转时 可以开启console日志保持模式 性能调试xhprof+xhguixhprof |
|