【发布时间】:2016-05-25 19:39:08
【问题描述】:
我正在尝试为我的网站设置错误报告系统。目前,我正在向我的大部分代码中添加 try/catch 块。对于我的 catch 块,我有一个包含在内的 log.php 文件。
我的 catch 块是这样的,
catch(PDOException $e) {
require_once 'includes/log.php';
}
包含的log.php文件包含以下代码,
$db = new PDO("mysql:host=$hostname;dbname=centers", $dbusername, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("INSERT INTO cent_log (ip, message, time, username) VALUES (:val1, :val2, :val3, :val4)");
$stmt->bindParam(':val1', $_SERVER['REMOTE_ADDR']);
$stmt->bindParam(':val2', $e);
$stmt->bindParam(':val3', $_SERVER['REQUEST_TIME']);
$stmt->bindParam(':val4', $_SESSION['user_IP']);
$stmt->execute();
但是,当我的 catch 块被触发时,来自 $e 的错误消息没有得到传递。当我检查我最近的数据库条目时,我发现当 PDO 尝试传入 $e 时,它的值为'null'
有人有什么想法吗?基本上我只想将所有错误记录到我的数据库中以供审查。谢谢
【问题讨论】:
-
您检查过您的实际错误日志吗?
-
$_SERVER['REMOTE_ADDR']和$_SESSION['user_IP']有什么区别? -
$_SESSION['user_ip'] 只是一个变量,用于存储用户登录时的初始 IP。
-
我不敢相信有人会尝试将数据库错误记录到...数据库中。