摘要
我有在不同学院中使用的学校管理系统。如果有人在任何页面上看到错误,然后单击“报告”按钮,然后所有错误存储在表中,我可以在其中看到对研究所造成何种错误 我想将所有的php错误警告等存储在变量中,但显示为空。
问题
全局数组中没有错误存储。
代码
ini_get(0);
set_error_handler("errorHandler");
register_shutdown_function("shutdownHandler");
function errorHandler($error_level, $error_message, $error_file,
$error_line, $error_context)
{
$error = " Msg:" . $error_message . " file:" . $error_file . " ln:" .
$error_line;
switch ($error_level) {
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_PARSE:
mylog($error, "fatal");
break;
case E_USER_ERROR:
case E_RECOVERABLE_ERROR:
mylog($error, "error");
break;
case E_WARNING:
case E_CORE_WARNING:
case E_COMPILE_WARNING:
case E_USER_WARNING:
mylog($error, "warn");
break;
case E_NOTICE:
case E_USER_NOTICE:
mylog($error, "info");
break;
case E_STRICT:
mylog($error, "debug");
break;
default:
mylog($error, "warn");
}
}
全局阵列
$ custom_error显示为空。
global $custom_error;
$custom_error = array();
function mylog($error, $errlvl)
{
// error_log($error);
// echo '<p><b>'.$error.'<b></p>';
$custom_error = $error
}
print_r($custom_error); //Show empty
if($custom_error){
echo '<button> Report </button>';
}
答案 0 :(得分:0)
首先,尝试在您的代码中not use globals,这是一种不好的做法。要回答您的问题:使用您提供的代码填充数组并从函数外部访问它,您应该在函数内部将数组$custom_error
声明为global
。这样,位于全局范围内的代码就可以访问该数组。
<?php
function mylog($error, $errlvl)
{
global $custom_error;
$custom_error[] = [$error, $errlvl];
}
mylog('error1', 1);
mylog('error2', 2);
echo '<pre>';
var_dump($custom_error);
echo '</pre>';
输出:
array(2) {
[0]=>
array(2) {
[0]=>
string(6) "error1"
[1]=>
int(1)
}
[1]=>
array(2) {
[0]=>
string(6) "error2"
[1]=>
int(2)
}
}