我有用PHP7.4编写的PHP代码
这段代码的一部分是一个顶级的PHP脚本(/home/path/a.php),它包含一组try Catch块,并包含对对象和包含文件的大量调用.
这些Try/Catch块抛出客户错误和运行时错误等.
在抛出中,有一个错误日志(log),其中包括打印到错误日志(log)的debug_backtrace()
.
// some code
use some/path/to/objects;
$database = new Database();
include "some/file/reference.php";
try {
// various things including $_SESSION data
if (empty($_SESSION['b']) || empty($_POST['d'])) {
if(empty($_SESSION['b'])) {
error_log("session appears empty. No b");
}
if(empty($_POST['d'])) {
error_log("POST appears empty. No d");
}
throw new RuntimeException('Incorrect validation/form details given.');
}
}
catch (RuntimeException | Exception $ex) {
error_log("Login Page: ".$_SESSION['message']);
error_log("debug: ".print_r(debug_backtrace(),true));
}
但是,此代码运行并正确收集错误,但错误日志(log)仅显示以下内容:
[31-Jul-2023 18:42:17 Europe/London] Some custom feedback message from $_SESSION['message']
[31-Jul-2023 18:42:17 Europe/London] Array
(
)
为什么这里Debug_backtrace()
是空的?我希望它至少显示页面给出的参数和变量,或者显示会话数据或环境数据?
我曾在其他地方使用过这种方法,而且(就我记忆所及)它是正确的.我遗漏了什么?