首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP + MySQL 錯誤日誌記錄最佳實踐:捕獲未知錯誤、保護敏感資訊

     編輯:MySQL 資料庫相關知識

錯誤日誌類別設計

class ErrorLogger {
  public function logError() {
    $fp = @fopen("error.dat", "a+");
    $time = date("Y-m-d H:i:s");
    $msg = "{VisitedTime:$time}\n"
         . "{VisitorIP:{$_SERVER['REMOTE_ADDR']}}\n"
         . "{ErrorMsg:" . mysql_error() . "}\n"
         . "{File:{$_SERVER['PHP_SELF']}}\n"
         . "{User:{$_SESSION['user']}}\n";
    @fputs($fp, $msg);
    @fclose($fp);
  }
}

頁面調用方式


if (mysql_error()) {
  $logger->logError();
}

日誌內容範例


{VisitedTime:2002-05-09 14:43:56}
{VisitorIP:127.0.0.1}
{ErrorMsg:Duplicate entry '0' for key 1}
{File:/path/to/errorfile.php}
{User:sports98}

進階建議

  • 生產環境禁用 display_errors**,僅記錄日誌,避免洩露資料庫結構、SQL 片段等敏感資訊。
  • include 檔案中**勿加 __LINE__**(行號指向 include 行);require 建議加入 __LINE__ 精確定位。
  • 日誌檔建議存放於 Web 根目錄**外部**,防止被直接下載。
  • 考慮使用 syslog、Monolog 等成熟日誌庫,支援分級、輪轉、遠端傳輸。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved