/** * Builds the context vars list for log and/or report * @var array $vars an array of vars to output * @var int $level the level in the context vars (prevent infinite recursion) * @return string the output to display */ function buildSimpleVarList($vars, $level = 0) { $output = ''; $indent = str_repeat(' ', $level * 2); $prefix = $level == 0 ? '$' : '\''; $suffix = $level == 0 ? '' : '\''; foreach ($vars as $key => $value) { if ($level == 0) { $key = $prefix . $key; } elseif (!is_numeric($key)) { $key = $prefix . $key . $suffix; } if (is_array($value)) { $length = count($value); $output .= '<li>' . "\n" . $indent; $output .= ' <b>' . $key . ':</b> array(' . $length . ')' . "\n" . $indent; $output .= ' <ul>' . "\n" . $indent; if ($level > 5) { // Prevent infinite recursion $output .= ' <li><em>(too much levels)</em></li>' . "\n" . $indent; } elseif ($length > 0) { $output .= ' ' . buildSimpleVarList($value, $level + 1) . "\n" . $indent; } else { $output .= ' <li><em>(empty)</em></li>' . "\n" . $indent; } $output .= ' </ul>' . "\n" . $indent; $output .= '</li>' . "\n" . $indent; } else { $output .= '<li><b>' . $key . ':</b> ' . describeVar($value) . '</li>' . "\n" . $indent; } } return rtrim($output); }
if (isset($level['class']) and strlen($level['class']) > 0) { $function = $level['class'] . '::' . $function; } // Arguments $args = array(); if (isset($level['args'])) { foreach ($level['args'] as $arg) { $args[] = describeVar($arg); } } $stackDesc[] = ' <li><b>' . htmlspecialchars(trimDocumentRoot($file, 40)) . '</b> @ line <b>' . $line . '</b>: ' . $function . '(' . implode(', ', $args) . ')</li>'; } $stackDesc[] = '</ul>'; } // Compose data for error reporting $report = array('time' => time(), 'type' => $exception ? 'exception' : 'error', 'url' => isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '', 'number' => $errno, 'message' => $errno, 'file' => $errno, 'line' => $errno, 'context' => '<ul>' . buildSimpleVarList($errcontext) . '</ul>', 'stack' => implode("\n", $stackDesc)); // Session identifier if (session_id() == '') { session_start(); } // Encoded data for reporting $encodedReport = encode(json_encode($report), session_id()); ?> <!DOCTYPE html> <html lang="en"> <head> <title>System error</title> <meta charset="utf-8"> <meta name="robots" content="none">