Merge pull request #447 from kijin/pr/error-handling-fixes

AJAX 요청 도중 치명적인 오류가 발생할 경우의 처리 방식 개선
This commit is contained in:
Kijin Sung 2016-04-16 18:02:52 +09:00
commit 30fbf83659
3 changed files with 18 additions and 5 deletions

View file

@ -1521,9 +1521,21 @@ class Context
// Set the message.
$oMessageObject = getView('message');
$oMessageObject->setError(-1);
$oMessageObject->setHttpStatusCode($status);
$oMessageObject->setMessage($title);
$oMessageObject->dispMessage($message);
if ($status != 200)
{
$oMessageObject->setHttpStatusCode($status);
ModuleHandler::_setHttpStatusMessage($status);
}
if (in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK')))
{
$oMessageObject->setMessage(trim($title . "\n\n" . $message));
}
else
{
$oMessageObject->setMessage($title);
$oMessageObject->dispMessage($message);
}
// Display the message.
$oModuleHandler = new ModuleHandler;

View file

@ -83,7 +83,7 @@ class DisplayHandler extends Handler
// header output
$httpStatusCode = $oModule->getHttpStatusCode();
if($httpStatusCode && $httpStatusCode != 200)
if($httpStatusCode && $httpStatusCode != 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK')))
{
self::_printHttpStatusCode($httpStatusCode);
}

View file

@ -417,7 +417,8 @@ class Debug
}
// Localize the error message.
$message = ini_get('display_errors') ? $message : lang('msg_server_error_see_log');
$display_error_message = ini_get('display_errors') || (\Context::get('logged_info') && toBool(\Context::get('logged_info')->is_admin));
$message = $display_error_message ? $message : lang('msg_server_error_see_log');
if ($message === 'msg_server_error_see_log')
{
$message = 'Your server is configured to hide error messages. Please see your server\'s error log for details.';