第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何通過(guò)電子郵件發(fā)送所有 PHP 異常/錯(cuò)誤的詳細(xì)信息,包括 mysqli 的?

如何通過(guò)電子郵件發(fā)送所有 PHP 異常/錯(cuò)誤的詳細(xì)信息,包括 mysqli 的?

PHP
慕后森 2023-05-26 17:12:15
如何獲得所有 PHP 異常,包括 mysqli 生成的異常和普通 php 異常,并通過(guò)電子郵件發(fā)送給我?問(wèn)題環(huán)境我在我的 ISP 處使用共享服務(wù)器,無(wú)法訪問(wèn)任何管理類型的 PHP 配置文件。在服務(wù)器上,我只有大約一百行 PHP 來(lái)對(duì) MySQL 數(shù)據(jù)庫(kù)執(zhí)行查詢,如果返回任何行,它會(huì)執(zhí)行一些 SQL UPDATE 命令。這作為 cron 作業(yè)每天運(yùn)行。沒(méi)有關(guān)聯(lián)的網(wǎng)站(我在該服務(wù)器上什至沒(méi)有網(wǎng)站)。服務(wù)器托管一個(gè)用于遠(yuǎn)程連接的數(shù)據(jù)庫(kù),而 php 只是對(duì)其執(zhí)行一些維護(hù)。由于沒(méi)有“用戶”和“網(wǎng)頁(yè)”來(lái)提供反饋,我希望所有錯(cuò)誤和異常都通過(guò)電子郵件發(fā)送給我。我嘗試/研究過(guò)的事情我發(fā)現(xiàn)mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);將通常導(dǎo)致返回 FALSE 的 mysqli 錯(cuò)誤轉(zhuǎn)換為將寫入錯(cuò)誤日志的異常。這有幫助。...我可以使用例如電子郵件發(fā)送文本$email = "my message";Error_log($email, 1, "myemailaddress@myserver.com", "From: defaultemail@hostingserver.com");  并且我可以通過(guò)編寫自己的錯(cuò)誤處理程序來(lái)獲取錯(cuò)誤的詳細(xì)信息,例如function the_error_handler($number, $message, $file, $line, $vars) //putting $vars in shows all the variables the server knows about{    $email = " An error ($number) occurred on line $line in $file.  $message ";    Error_log($email, 1, "myemailaddress@myserver.com", "From: defaultemail@hostingserver.com");    };并使用它進(jìn)行設(shè)置set_error_handler('the_error_handler'); 最小的,可重現(xiàn)的例子在下面的代碼中,我將所有這些放在一起并故意引入了兩個(gè)錯(cuò)誤(試圖回顯一個(gè)不存在的變量并試圖在一個(gè)不存在的表上執(zhí)行查詢。
查看完整描述

1 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

首先,我必須警告您,在一個(gè)向公眾開(kāi)放的實(shí)時(shí)站點(diǎn)上,電子郵件錯(cuò)誤可能會(huì)淹沒(méi)您的郵箱,以防萬(wàn)一出現(xiàn)嚴(yán)重故障,因?yàn)閷?duì)站點(diǎn)的每個(gè)請(qǐng)求都會(huì)導(dǎo)致發(fā)送一封不同的電子郵件。在我工作的公司中,這種情況不止一次發(fā)生過(guò)。有時(shí)很難在錯(cuò)誤的瀑布中找到真正的原因。

監(jiān)控服務(wù)器日志被認(rèn)為是更安全和準(zhǔn)確的解決方案。事實(shí)證明,在錯(cuò)誤日志上使用 Grep 比瀏覽電子郵件更有效。但無(wú)論哪種方式,這里的問(wèn)題是如何統(tǒng)一處理所有錯(cuò)誤,而處理程序中采取的操作可以是任何操作。

錯(cuò)誤和異常是不同的野獸,每個(gè)都有自己的處理程序。因此,要使錯(cuò)誤處理統(tǒng)一,您必須首先將錯(cuò)誤轉(zhuǎn)換為異常,然后在異常處理程序中執(zhí)行所需的處理,無(wú)論它是什么——日志記錄、電子郵件或任何東西。

因此,您將需要本文中介紹的兩個(gè)功能,即簡(jiǎn)單地將錯(cuò)誤轉(zhuǎn)換為異常的錯(cuò)誤處理程序,

set_error_handler(function ($level, $message, $file = '', $line = 0)

{

? ? throw new ErrorException($message, 0, $level, $file, $line);

});

和這樣的異常處理程序


set_exception_handler(function ($e)

{

? ? error_log($e);

? ? http_response_code(500);

? ? if (ini_get('display_errors')) {

? ? ? ? echo $e;

? ? } else {

? ? ? ? error_log($e, 1, "myemailaddress@myserver.com", "From: defaultemail@hostingserver.com");

? ? ? ? echo "<h1>500 Internal Server Error</h1>

? ? ? ? ? ? ? An internal server error has been occurred.<br>

? ? ? ? ? ? ? Please try again later.";

? ? }

});

每次發(fā)生錯(cuò)誤并且代碼在實(shí)時(shí)站點(diǎn)上運(yùn)行時(shí),它都會(huì)向您發(fā)送一封電子郵件。


此外,您可能希望添加一個(gè)致命錯(cuò)誤處理程序,它可能有助于處理同名錯(cuò)誤??梢栽谖恼轮锌吹剿腥齻€(gè)處理程序組合在一起的完整示例。


關(guān)于mysqli,你是絕對(duì)正確的,下面一行


?mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

將告訴 mysqli 拋出異常,這些異常將由上面定義的處理程序處理。


查看完整回答
反對(duì) 回復(fù) 2023-05-26
  • 1 回答
  • 0 關(guān)注
  • 179 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)