public function handle() { if (!$this->isAjaxRequest()) { return Handler::DONE; } $display = Config::get('concrete.debug.display_errors'); if (!$display) { $error = array('message' => t('An error occurred while processing this request.')); } else { $detail = Config::get('concrete.debug.detail', 'message'); if ($detail !== 'debug') { $e = $this->getInspector()->getException(); $error = array('message' => $e->getMessage()); } else { $error = Formatter::formatExceptionAsDataArray($this->getInspector(), true); } } $response = array('error' => $error, 'errors' => array($error['message'])); if (Misc::canSendHeaders()) { if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false) { header('Content-Type: application/json; charset=' . APP_CHARSET, true); } else { header('Content-Type: text/plain; charset=' . APP_CHARSET, true); } } echo json_encode($response); return Handler::QUIT; }
public function handle() { if (!$this->isAjaxRequest()) { return Handler::DONE; } $ex = $this->getException(); if ($ex instanceof UserException) { $obj = ['message' => $ex->getMessage(), 'code' => $ex->getUserErrorCode(), 'status' => $ex->getCode()]; } else { if ($this->debug) { $obj = ['message' => $ex->getMessage(), 'code' => $ex->getCode(), 'status' => 500]; } else { $obj = ['message' => 'Server internal error', 'code' => -1, 'status' => 500]; } } if ($this->debug) { $obj['detail'] = Formatter::formatExceptionAsDataArray($this->getInspector(), true); } $this->getRun()->sendHttpCode($obj['status']); if (Misc::canSendHeaders()) { header('Content-Type: application/json'); } echo json_encode($obj); return Handler::QUIT; }
/** * @return int */ public function handle() { $response = array('error' => Formatter::formatExceptionAsDataArray($this->getInspector(), $this->addTraceToOutput())); if (\Whoops\Util\Misc::canSendHeaders()) { header('Content-Type: application/json'); } echo json_encode($response, defined('JSON_PARTIAL_OUTPUT_ON_ERROR') ? JSON_PARTIAL_OUTPUT_ON_ERROR : 0); return Handler::QUIT; }
/** * @return int */ public function handle() { if ($this->onlyForAjaxRequests() && !$this->isAjaxRequest()) { return Handler::DONE; } $response = array('error' => Formatter::formatExceptionAsDataArray($this->getInspector(), $this->addTraceToOutput())); if (\Whoops\Util\Misc::canSendHeaders()) { header('Content-Type: application/json'); } echo json_encode($response); return Handler::QUIT; }
/** * @return int */ public function handle() { if (!$this->isAjaxRequest()) { return Handler::DONE; } $response = array('success' => false, 'data' => Formatter::formatExceptionAsDataArray($this->getInspector(), $this->addTraceToOutput())); if (Misc::canSendHeaders()) { header('Content-Type: application/json; charset=' . get_option('blog_charset')); } $json_options = version_compare(PHP_VERSION, '5.4.0', '>=') ? JSON_PRETTY_PRINT : 0; echo wp_json_encode($response, $json_options); return Handler::QUIT; }
/** * @return int */ public function handle() { if ($this->onlyForAjaxRequests() && !$this->isAjaxRequest()) { return \Whoops\Handler\Handler::DONE; } if ($this->onlyForJsonRequests() && !$this->isJsonRequest()) { return \Whoops\Handler\Handler::DONE; } $response = array('error' => Formatter::formatExceptionAsDataArray($this->getInspector(), $this->addTraceToOutput())); unset($response['error']['file']); unset($response['error']['line']); $response['error']['code'] = $this->getException()->getCode(); if (\Whoops\Util\Misc::canSendHeaders()) { http_response_code($response['error']['code']); header('Content-Type: application/json'); } echo json_encode($response, defined('JSON_PARTIAL_OUTPUT_ON_ERROR') ? JSON_PARTIAL_OUTPUT_ON_ERROR : 0); return \Whoops\Handler\Handler::QUIT; }
public function handle() { $debug = Config::get('concrete.debug.level', 0); if ($debug !== DEBUG_DISPLAY_ERRORS) { return Handler::DONE; } if (!$this->isAjaxRequest()) { return Handler::DONE; } $error = Formatter::formatExceptionAsDataArray($this->getInspector(), true); $response = array('error' => $error, 'errors' => array($error['message'])); if (\Whoops\Util\Misc::canSendHeaders()) { if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false) { header('Content-Type: application/json; charset=' . APP_CHARSET, true); } else { header('Content-Type: text/plain; charset=' . APP_CHARSET, true); } } echo json_encode($response); return Handler::QUIT; }
/** * Echo something to the browser * @param string $output * @return $this */ private function writeToOutputNow($output) { if ($this->sendHttpCode() && \Whoops\Util\Misc::canSendHeaders()) { $httpCode = $this->sendHttpCode(); if (function_exists('http_response_code')) { http_response_code($httpCode); } else { // http_response_code is added in 5.4. // For compatibility with 5.3 we use the third argument in header call // First argument must be a real header. // If it is empty, PHP will ignore the third argument. // If it is invalid, such as a single space, Apache will handle it well, // but the PHP development server will hang. // Setting a full status line would require us to hardcode // string values for all different status code, and detect the protocol. // which is an extra error-prone complexity. header('X-Ignore-This: 1', true, $httpCode); } } echo $output; return $this; }
/** * @return int */ public function handle() { if (!$this->canProcess()) { return Handler::DONE; } $exception = $this->getException(); $response = sprintf("%s: %s in file %s on line %d%s\n", get_class($exception), $exception->getMessage(), $exception->getFile(), $exception->getLine(), $this->getTraceOutput()); if ($this->getLogger()) { $this->getLogger()->error($response); } if (!$this->canOutput()) { return Handler::DONE; } if (class_exists('\\Whoops\\Util\\Misc') && \Whoops\Util\Misc::canSendHeaders()) { header('Content-Type: text/plain'); } echo $response; return Handler::QUIT; }
/** * @return int|null */ public function handle() { if (!$this->handleUnconditionally()) { // Check conditions for outputting HTML: // @todo: Make this more robust if (php_sapi_name() === 'cli') { // Help users who have been relying on an internal test value // fix their code to the proper method if (isset($_ENV['whoops-test'])) { throw new \Exception('Use handleUnconditionally instead of whoops-test' . ' environment variable'); } return Handler::DONE; } } // @todo: Make this more dynamic $helper = new TemplateHelper(); $templateFile = $this->getResource("views/layout.html.php"); $cssFile = $this->getResource("css/whoops.base.css"); $zeptoFile = $this->getResource("js/zepto.min.js"); $clipboard = $this->getResource("js/clipboard.min.js"); $jsFile = $this->getResource("js/whoops.base.js"); if ($this->customCss) { $customCssFile = $this->getResource($this->customCss); } $inspector = $this->getInspector(); $frames = $inspector->getFrames(); $code = $inspector->getException()->getCode(); if ($inspector->getException() instanceof \ErrorException) { // ErrorExceptions wrap the php-error types within the "severity" property $code = Misc::translateErrorCode($inspector->getException()->getSeverity()); } // List of variables that will be passed to the layout template. $vars = array("page_title" => $this->getPageTitle(), "stylesheet" => file_get_contents($cssFile), "zepto" => file_get_contents($zeptoFile), "clipboard" => file_get_contents($clipboard), "javascript" => file_get_contents($jsFile), "header" => $this->getResource("views/header.html.php"), "frame_list" => $this->getResource("views/frame_list.html.php"), "frame_code" => $this->getResource("views/frame_code.html.php"), "env_details" => $this->getResource("views/env_details.html.php"), "title" => $this->getPageTitle(), "name" => explode("\\", $inspector->getExceptionName()), "message" => $inspector->getException()->getMessage(), "code" => $code, "plain_exception" => Formatter::formatExceptionPlain($inspector), "frames" => $frames, "has_frames" => !!count($frames), "handler" => $this, "handlers" => $this->getRun()->getHandlers(), "tables" => array("GET Data" => $_GET, "POST Data" => $_POST, "Files" => $_FILES, "Cookies" => $_COOKIE, "Session" => isset($_SESSION) ? $_SESSION : array(), "Server/Request Data" => $_SERVER, "Environment Variables" => $_ENV)); if (isset($customCssFile)) { $vars["stylesheet"] .= file_get_contents($customCssFile); } // Add extra entries list of data tables: // @todo: Consolidate addDataTable and addDataTableCallback $extraTables = array_map(function ($table) { return $table instanceof \Closure ? $table() : $table; }, $this->getDataTables()); $vars["tables"] = array_merge($extraTables, $vars["tables"]); if (\Whoops\Util\Misc::canSendHeaders()) { header('Content-Type: text/html'); } $helper->setVariables($vars); $helper->render($templateFile); return Handler::QUIT; }
/** * @return int */ public function handle() { if (!$this->canProcess()) { return Handler::DONE; } $exception = $this->getException(); // $response = sprintf("%s: %s in file %s on line %d%s\n", // get_class($exception), // $exception->getMessage(), // $exception->getFile(), // $exception->getLine(), // // $this->getTraceOutput() // null // ); //var_dump($exception); // echo "1"; if ($this->getLogger()) { $this->getLogger()->error($response); } if (!is_null($exception)) { $msg = $this->msg; $bg_color = $this->bg_color; //include_once '/core/Access/ErrorDisplayer/simple.php'; ?> <head> <meta charset="utf-8"/> <title><?php echo $msg; ?> </title> <style type="text/css"> body { background: #e9e9e9; background: <?php echo $bg_color; ?> ; margin: 0px; padding: 0px; } div { box-shadow: 0px 3px 6px 3px rgba(0,0,0,0.2); border:1px solid gray; border-radius:5px; display: inline-block; padding:30px; font-size: 16px; font: 20px Georgia, "Times New Roman", Times, serif; width: 460px; margin: 60px auto; display: block; background: white; } </style> </head> <body> <div><?php echo $msg; ?> </div> </body> <?php } return Handler::QUIT; if (!$this->canOutput()) { return Handler::DONE; } if (class_exists('\\Whoops\\Util\\Misc') && \Whoops\Util\Misc::canSendHeaders()) { //header('Content-Type: html/text'); } //if(! is_null ($exception)) echo "fff"; return Handler::QUIT; }
/** * @return int */ public function handle() { if (!$this->canProcess()) { return Handler::DONE; } $exception = $this->getException(); // $response = sprintf("%s: %s in file %s on line %d%s\n", // get_class($exception), // $exception->getMessage(), // $exception->getFile(), // $exception->getLine(), // // $this->getTraceOutput() // null // ); //var_dump($exception); // echo "1"; if ($this->getLogger()) { $this->getLogger()->error($response); } if (!is_null($exception)) { $msg = $this->msg; $bg_color = $this->bg_color; include_once '../core/Access/ErrorDisplayer/simple.php'; } return Handler::QUIT; if (!$this->canOutput()) { return Handler::DONE; } if (class_exists('\\Whoops\\Util\\Misc') && \Whoops\Util\Misc::canSendHeaders()) { //header('Content-Type: html/text'); } //if(! is_null ($exception)) echo "fff"; return Handler::QUIT; }
/** * Echo something to the browser * @param string $output * @return $this */ private function writeToOutputNow($output) { if ($this->sendHttpCode() && \Whoops\Util\Misc::canSendHeaders()) { $this->system->setHttpResponseCode($this->sendHttpCode()); } echo $output; return $this; }
/** * @return int|null */ public function handle() { if (!$this->handleUnconditionally()) { // Check conditions for outputting HTML: // @todo: Make this more robust if (php_sapi_name() === 'cli') { // Help users who have been relying on an internal test value // fix their code to the proper method if (isset($_ENV['whoops-test'])) { throw new \Exception('Use handleUnconditionally instead of whoops-test' . ' environment variable'); } return Handler::DONE; } } // @todo: Make this more dynamic $helper = new TemplateHelper(); if (class_exists('Symfony\\Component\\VarDumper\\Cloner\\VarCloner')) { $cloner = new VarCloner(); // Only dump object internals if a custom caster exists. $cloner->addCasters(['*' => function ($obj, $a, $stub, $isNested, $filter = 0) { $class = $stub->class; $classes = [$class => $class] + class_parents($class) + class_implements($class); foreach ($classes as $class) { if (isset(AbstractCloner::$defaultCasters[$class])) { return $a; } } // Remove all internals return []; }]); $helper->setCloner($cloner); } $templateFile = $this->getResource("views/layout.html.php"); $cssFile = $this->getResource("css/whoops.base.css"); $zeptoFile = $this->getResource("js/zepto.min.js"); $clipboard = $this->getResource("js/clipboard.min.js"); $jsFile = $this->getResource("js/whoops.base.js"); if ($this->customCss) { $customCssFile = $this->getResource($this->customCss); } $inspector = $this->getInspector(); $frames = $inspector->getFrames(); $code = $inspector->getException()->getCode(); if ($inspector->getException() instanceof \ErrorException) { // ErrorExceptions wrap the php-error types within the "severity" property $code = Misc::translateErrorCode($inspector->getException()->getSeverity()); } // Detect frames that belong to the application. if ($this->applicationPaths) { /* @var \Whoops\Exception\Frame $frame */ foreach ($frames as $frame) { foreach ($this->applicationPaths as $path) { if (substr($frame->getFile(), 0, strlen($path)) === $path) { $frame->setApplication(true); break; } } } } // List of variables that will be passed to the layout template. $vars = ["page_title" => $this->getPageTitle(), "stylesheet" => file_get_contents($cssFile), "zepto" => file_get_contents($zeptoFile), "clipboard" => file_get_contents($clipboard), "javascript" => file_get_contents($jsFile), "header" => $this->getResource("views/header.html.php"), "header_outer" => $this->getResource("views/header_outer.html.php"), "frame_list" => $this->getResource("views/frame_list.html.php"), "frames_description" => $this->getResource("views/frames_description.html.php"), "frames_container" => $this->getResource("views/frames_container.html.php"), "panel_details" => $this->getResource("views/panel_details.html.php"), "panel_details_outer" => $this->getResource("views/panel_details_outer.html.php"), "panel_left" => $this->getResource("views/panel_left.html.php"), "panel_left_outer" => $this->getResource("views/panel_left_outer.html.php"), "frame_code" => $this->getResource("views/frame_code.html.php"), "env_details" => $this->getResource("views/env_details.html.php"), "title" => $this->getPageTitle(), "name" => explode("\\", $inspector->getExceptionName()), "message" => $inspector->getException()->getMessage(), "code" => $code, "plain_exception" => Formatter::formatExceptionPlain($inspector), "frames" => $frames, "has_frames" => !!count($frames), "handler" => $this, "handlers" => $this->getRun()->getHandlers(), "active_frames_tab" => count($frames) && $frames->offsetGet(0)->isApplication() ? 'application' : 'all', "has_frames_tabs" => $this->getApplicationPaths(), "tables" => ["GET Data" => $_GET, "POST Data" => $_POST, "Files" => $_FILES, "Cookies" => $_COOKIE, "Session" => isset($_SESSION) ? $_SESSION : [], "Server/Request Data" => $_SERVER, "Environment Variables" => $_ENV]]; if (isset($customCssFile)) { $vars["stylesheet"] .= file_get_contents($customCssFile); } // Add extra entries list of data tables: // @todo: Consolidate addDataTable and addDataTableCallback $extraTables = array_map(function ($table) use($inspector) { return $table instanceof \Closure ? $table($inspector) : $table; }, $this->getDataTables()); $vars["tables"] = array_merge($extraTables, $vars["tables"]); if (\Whoops\Util\Misc::canSendHeaders()) { header('Content-Type: text/html'); } $plainTextHandler = new PlainTextHandler(); $plainTextHandler->setException($this->getException()); $plainTextHandler->setInspector($this->getInspector()); $vars["preface"] = "<!--\n\n\n" . $plainTextHandler->generateResponse() . "\n\n\n\n\n\n\n\n\n\n\n-->"; $helper->setVariables($vars); $helper->render($templateFile); return Handler::QUIT; }
/** * @return int */ public function handle() { $response = $this->generateResponse(); if ($this->getLogger()) { $this->getLogger()->error($response); } if (!$this->canOutput()) { return Handler::DONE; } if (\Whoops\Util\Misc::canSendHeaders()) { header('Content-Type: text/plain'); } echo $response; return Handler::QUIT; }