日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php 打印错误 display,php错误display及error_reporting的使用

發(fā)布時間:2023/12/15 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 打印错误 display,php错误display及error_reporting的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今日在開發(fā)中,遇到線上服務(wù)器不記錄變量不存在的錯誤日志,那么是怎么回事呢?

于是開始查找 index.php 中的代碼switch?(ENVIRONMENT)?{

case?'development':

error_reporting(-1);

ini_set('display_errors',?0);

break;

case?'testing':

case?'production':

ini_set('display_errors',?0);

if?(version_compare(PHP_VERSION,?'5.3',?'>='))?{

error_reporting(E_ALL?&?~E_NOTICE?&?~E_DEPRECATED?&?~E_STRICT?&?~E_USER_NOTICE?&?~E_USER_DEPRECATED);

}

else?{

error_reporting(E_ALL?&?~E_NOTICE?&?~E_STRICT?&?~E_USER_NOTICE);

}

break;

default:

header('HTTP/1.1?503?Service?Unavailable.',?TRUE,?503);

echo?'The?application?environment?is?not?set?correctly.';

exit(1);?//?EXIT_ERROR

}

線上代碼是 production 生產(chǎn)環(huán)境, 是執(zhí)行:error_reporting(E_ALL?&?~E_NOTICE?&?~E_STRICT?&?~E_USER_NOTICE);

這句話的代碼是什么意思呢?

所有日志,除了了E_NOTICE? E_STRICT? 以及E_USER_NOTICE 這三個錯誤以外的錯誤才提示和記錄,

變量不存在,屬于 Notice 這個層次的

開發(fā)環(huán)境:可以正常記錄,變量不存在

ERROR - 2018-06-12 17:29:58 --> Severity: Notice --> Undefined index: success D:\phpStudy\WWW\jifen\wangyu\app\helpers\funs_helper.php 158

生產(chǎn)環(huán)境:不記錄了

原因就是:error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);

打開錯誤:

打開所有的錯誤,全部輸出:這是開發(fā)環(huán)境

ini_set('display_errors',1);

error_reporting(-1);? 報告所有的錯誤

error_reporting(0); //關(guān)閉所有錯誤

error_reporting=E_ALL?& ?~E_NOTICE

意思是報告所有的錯誤,但除了E_NOTICE這一種。這也是最常用的錯誤報告級別,它不會報告注意類(如:使用了未定義的變量)的錯誤。

下面列舉一些錯誤報告級別:

值 ? ? ? ? ?常量 ? ? ? ? ? ? ? ? ? ? 說明

1 ? ? ? ? ??E_ERROR ? ? ? ? ? ? 報告導(dǎo)致腳本終止運行的致命錯誤

2 ? ? ? ? ??E_WARNING ? ? ? 報告運行時的警告類錯誤(腳本不會終止運行)

4 ? ? ? ? ??E_PARSE ? ? ? ? ? ? 報告編譯時的語法解析錯誤

8 ? ? ? ? ??E_NOTICE ? ? ? ? ? 報告通知類錯誤,腳本可能會產(chǎn)生錯誤

32767 ??E_ALL ? ? ? ? ? ? ? ? ?報告所有的可能出現(xiàn)的錯誤(不同的PHP版本,常量E_ALL的值也可能不同)

error_reporting(E_ALL?^?E_NOTICE); ? ?// 除了E_NOTICE之外,報告所有的錯誤

error_reporting(E_ALL & ~E_NOTICE);??// 除了E_NOTICE之外,報告所有的錯誤 這兩種意思一樣

error_reporting(E_ERROR); ? ? ? // 只報告致命錯誤

echo?error_reporting(E_ERROR?|?E_WARNING?|?E_NOTICE); ? // 只報告E_ERROR、E_WARNING 和 E_NOTICE三種錯誤

注意:配置文件php.ini中display_errors的默認值為On,代表顯示錯誤提示,如果設(shè)置為Off,就會關(guān)閉所有的錯誤提示。

可以通過程序動態(tài)去設(shè)置? 錯誤是否開啟和關(guān)閉:ini_set('display_error');

ini_get('display_errors');? 可以獲取當(dāng)前php運行 錯誤報告的狀態(tài)。

特別告知: Notice? 和 Warning 運行出錯的時候,程序不會停止,會繼續(xù)運行。

class?Err{

protected?$debug;

public?function?__construct($debug=true){

$this->debug=$debug;

}

public?function?error(){

error_reporting(0);

set_error_handler([$this,'handle'],E_ALL|E_STRICT);

}

public?function?handle($code,$error,$file,$line){

echo?$error;

print_r($file);

}

}

(new?Err())->error();

echo?$a;

總結(jié)

以上是生活随笔為你收集整理的php 打印错误 display,php错误display及error_reporting的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。