錯(cuò)誤和異常錯(cuò)誤php程序自身的問(wèn)題,一般是由非法的語(yǔ)法,環(huán)境問(wèn)題導(dǎo)致 異常一般是業(yè)務(wù)邏輯上出現(xiàn)的不合預(yù)期、與正常流程不同的狀況,不是語(yǔ)法錯(cuò)誤 錯(cuò)誤異常繼承關(guān)系小括號(hào)表示php版本 php7下的常見(jiàn)錯(cuò)誤異常類型
錯(cuò)誤和異常的有關(guān)主要配置log_errors //開(kāi)啟記錄錯(cuò)誤日志display_errors //是否在頁(yè)面展示錯(cuò)誤日志error_reporting //錯(cuò)誤級(jí)別error_log 如果該配置沒(méi)有設(shè)置,則錯(cuò)誤信息會(huì)被發(fā)送到 SAPI 錯(cuò)誤記錄器。 例如,出現(xiàn)nginx的錯(cuò)誤日志中,或者在CLI中發(fā)送到 stderr 配置優(yōu)先級(jí)別fpm>ini>nginx 錯(cuò)誤/異常有關(guān)處理函數(shù)https://www./manual/zh/ref.errorfunc.php set_exception_handler在exception_handler 調(diào)用后異常會(huì)中止 set_error_handler以下級(jí)別的錯(cuò)誤不能由用戶定義的函數(shù)來(lái)處理,獨(dú)立于發(fā)生錯(cuò)誤的地方: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,和在 調(diào)用 set_error_handler() 函數(shù)所在文件中產(chǎn)生的大多數(shù) E_STRICT handler里error_types 里指定的錯(cuò)誤類型都會(huì)繞過(guò) PHP 標(biāo)準(zhǔn)錯(cuò)誤處理程序, 除非回調(diào)函數(shù)返回了 false register_shutdown_function不影響error_log的行為,可以多個(gè) Yii里的異常和錯(cuò)誤處理
常見(jiàn)的查錯(cuò)去哪找日志,陌生的項(xiàng)目怎么快速的找到日志1.去error_log文件找(php-fpm.conf→php.ini→nginx的error_log) 一定要注意日志文件的權(quán)限(fpm 的worker進(jìn)程是否可寫(xiě)) 不找日志,重置錯(cuò)誤處理不想管自定義的錯(cuò)誤處理 error_reporting(E_ALL);ini_set("display_errors","On");restore_exception_handler();restore_error_handler(); 常用調(diào)試基本簡(jiǎn)單的調(diào)試var_dump(),print_r(),var_export() Yii框架的幫助函數(shù) 比如 yii\helpers\VarDumper::dump/dumpAsString()); 調(diào)用棧追蹤1. 其它工具Yii的debugger tool為了調(diào)試方便對(duì)其他人不產(chǎn)生影響,可使用種cookie方式開(kāi)啟(外加ip白名單)方式,比較適合yii混編的頁(yè)面調(diào)試 輔助配套的cookie-editor插件 https://chrome.google.com/webstore/detail/cookie-editor/iphcomljdfghbkdcfndaijbokpgddeno?hl=zh-CN whoops(類似yii debugger tool)
chrome控制臺(tái)https://github.com/ccampbell/chromephp 頁(yè)面有刷新跳轉(zhuǎn)時(shí) 可以開(kāi)啟console日志保持模式 性能調(diào)試xhprof+xhguixhprof |
|