我們學習了解這麼多關於PHP的知識,不知道你們對PHP程式語法錯誤是否已經完全掌握了呢,如果沒有,那就跟著本篇文章一起繼續學習吧
PHP程式語法錯誤導致
場景一:我們專案設定有警報監控(定時每隔10分鐘訪問一下網站的一個固定連結),曾經有一段時間,每天都會收到兩三次報500錯誤的郵件,但當自己再手動訪問時卻訪問正常…
這應該是最常見的錯誤了,語法錯誤也能很快復現,只要把報錯訊息暴露出來即可根據問題立刻解決。
如果是在本地或測試環境,通常我們是這麼處理的,在程式入口中設定輸出報錯訊息即可:
//error_reporting设置应该报告的错误,下面表示除了 E_NOTICE,报告其他所有错误 error_reporting(E_ALL ^ E_NOTICE); //输出错误 ini_set('display_errors', 1);
但在線上環境的話,因為使用者都在使用,不可能允許我們就那麼赤裸裸的列印錯誤,怎麼辦呢?可以在程式入口檔案中設定將錯誤輸出到日誌檔案中,具體程式碼如下:
error_reporting(E_ALL ^ E_NOTICE); //禁止把错误输出到页面 ini_set('display_errors', 0); //设置错误信息输出到文件 ini_set('log_errors', 1); //指定错误日志文件名 $error_dir = '/logs/err/'; $error_file = $error_dir . date('Ymd').'.log'; //目录不存在就创建 if (!is_dir($error_dir)){ mkdir($error_dir, 0777, true); } //文件不存在就创建之 if(!file_exists($error_file)){ $fp = fopen($error_file, 'w+'); if($fp){ fclose($fp); } } //设置错误输出文件 ini_set("error_log", $error_file); //程序正常执行逻辑......
剛才說的場景一問題,後來我們按照上面輸出到log的方式輸出才發現的,是因為mysql連線異常斷開而程式繼續執行(連接mysql時正常,但當呼叫具體查詢方法時報錯,記得好像是在使用方法mysqli_real_escape_string()
的地方)導致的fatal級報錯,最終才順利修復了。
#場景二:有一次,一個同事說圖片上傳不上去了,一直報錯500,之前還好好的,但沒找出是什麼問題,因為那塊當時是我負責開發的,所以就過來找我,各種檢查都沒發現是什麼問題,其它頁面訪問正常,本頁面把代碼全刪除了再上傳還是報錯,找了很久最終才發現是磁碟滿了o(╥﹏╥)o…
因磁碟空間不足,沒有足夠空間讀寫資料而導致的500報錯極不常見,且不易及時發現。通常遇到500問題,很快想到的是程式錯誤,其實還有可能是磁碟空間不足了,如果在程式上為找到任何問題,可以查看下是否是磁碟空間不足問題哦~# df -h
查看磁碟空間佔用情況
#對於http請求報錯狀態碼為500,通常解釋是:表示伺服器遇到錯誤,無法完成請求(即伺服器內部錯誤),但具體問題還要具體分析
推薦學習:《PHP影片教學》
以上是php程式訪問報500錯誤處理方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!