Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将所有php错误和警告存储在全局数组中_Php - Fatal编程技术网

将所有php错误和警告存储在全局数组中

将所有php错误和警告存储在全局数组中,php,Php,摘要 我有学校管理系统,在不同的学院使用。如果任何人在任何页面上看到错误,请单击“报告”按钮,然后将所有错误存储在表中,在表中我可以看到针对该机构的错误类型 我想将所有php错误警告等存储在变量中,但其显示为空 global $custom_error; $custom_error = array(); function mylog($error, $errlvl) { // error_log($error); // echo '<p><b>'.$err

摘要

我有学校管理系统,在不同的学院使用。如果任何人在任何页面上看到错误,请单击“报告”按钮,然后将所有错误存储在表中,在表中我可以看到针对该机构的错误类型 我想将所有php错误警告等存储在变量中,但其显示为空

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>';
 }
如果变量存储错误和警告,它将显示如下。

问题

全局数组中没有错误存储

代码

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\u错误显示为空

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>';
 }
全局$custom\u错误;
$custom_error=array();
函数mylog($error,$errlvl)
{
//错误日志($error);
//回显“”.$error.“

”; $custom_error=$error } 打印错误($custom\u error)//空出 如果($custom\u error){ 回应"报告",; }
首先,试着在你的代码中添加,这是不好的做法。要回答您的问题:要使用您提供的代码填充数组并从函数外部访问它,您应该在函数内部将数组
$custom\u error
声明为
全局
。这样,位于全局作用域中的代码就可以访问数组

<?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>';

服务器的错误日志呢?我不想使用错误日志,因为我有学校管理系统,在不同的学院使用。如果任何人看到任何类型的错误,而不是点击报告按钮,那么所有的错误都存储在表中,我可以在表中看到不同机构的错误。为什么需要用户点击“报告”来告诉您应该记录的PHP错误?1。将它们直接放入数据库。通过电子邮件上报严重错误。2.我将使用静态类作为存储。3.没有人会点击该按钮如果您的网站/应用程序的某个页面在不引发任何错误/异常的情况下不符合预期行为,则“报告”按钮将非常有用。对于您的情况,正如我们中的一些人所说,您已经有一个文件日志,或者您可以将它们存储在数据库中。您需要提供比“在我的情况下它不起作用”更多的反馈。。。您是否收到任何错误消息?你做了什么来调试你的代码?我的php文件中出现了3个错误,$custom\u error variable中没有任何错误存储我也尝试将错误保存在$\u SESSION['custom\u error']中,但它只存储最后一个错误。创建会话数组时,其显示为空。$\u会话['CUSTOM\u error']中没有错误消息存储