캐시가 없는 상황에서 DB 연결 에러시 DB 에러 메세지 대신 php 치명적 에러가 나오는 문제 수정

(라이믹스 오류 화면 출력시에도 DB 연결이 사용되므로 Debug::displayErrorScreen() 함수를 거치면 치명적 에러가 발생되기에 Exception로 처리하지 않았음)
라이믹스가 설치되지 않은 상태에서는 "에러 로그로 확인하라는 메세지" 없이 에러가 바로 출력되도록 수정
This commit is contained in:
conory 2019-01-17 18:26:46 +09:00
parent 843e16f983
commit c2221a25e6
3 changed files with 31 additions and 18 deletions

View file

@ -650,7 +650,7 @@ class Debug
}
// Localize the error message.
$display_error_message = ini_get('display_errors') || Session::isAdmin();
$display_error_message = ini_get('display_errors') || !\Context::isInstalled() || Session::isAdmin();
$message = $display_error_message ? $message : lang('msg_server_error_see_log');
if ($message === 'msg_server_error_see_log')
{
@ -664,17 +664,28 @@ class Debug
}
catch (\Error $e)
{
header('HTTP/1.1 500 Internal Server Error');
if ($_SERVER['REQUEST_METHOD'] === 'GET' || !isset($_SERVER['HTTP_X_REQUESTED_WITH']))
{
header('Content-Type: text/html; charset=UTF-8');
echo sprintf('<html><head><meta charset="UTF-8" /><title>%s</title></head><body>%s</body></html>', escape($title, false), escape($message, false));
}
else
{
header('Content-Type: application/json; charset=UTF-8');
echo json_encode(array('error' => -1, 'message' => escape($message, false)), \JSON_UNESCAPED_UNICODE);
}
self::displayError($message);
}
}
/**
* Display a default error.
*
* @param string $message
* @return void
*/
public static function displayError($message)
{
header('HTTP/1.1 500 Internal Server Error');
if ($_SERVER['REQUEST_METHOD'] === 'GET' || !isset($_SERVER['HTTP_X_REQUESTED_WITH']))
{
header('Content-Type: text/html; charset=UTF-8');
echo sprintf('<html><head><meta charset="UTF-8" /><title>Server Error</title></head><body>%s</body></html>', escape($message, false));
}
else
{
header('Content-Type: application/json; charset=UTF-8');
echo json_encode(array('error' => -1, 'message' => escape($message, false)), \JSON_UNESCAPED_UNICODE);
}
}