"Apache 2 PHP цагаа дэлгэцийн алдаа"-ны өөр хувилбарууд
Дусал нэвтэрхий толь-с
(Шинэ хуудас: Вэб хөгжүүлэх үед цагаан дэлгэц гараад код яаж бичсэнээс хамаараад алдаа гарах үе байдаг. Мэдээ…) |
|||
| 63-р мөр: | 63-р мөр: | ||
$old_error_handler = set_error_handler("ErrorHandler"); | $old_error_handler = set_error_handler("ErrorHandler"); | ||
| − | // other php code | + | // other php code энд өөрийнхөө phpcode бичих юм уу энэ файлаа include хийж болно. |
?> | ?> | ||
14:21, 20 Зургаадугаар сар 2015-ий байдлаарх одоогийн засвар
Вэб хөгжүүлэх үед цагаан дэлгэц гараад код яаж бичсэнээс хамаараад алдаа гарах үе байдаг. Мэдээж display_error, эсвэл error_log дээрээс алдаагаа харж болно. Харин алдаа харагдуулалтыг асаалттай байлгах нь хакердуулах эрсдлийг нэмэгдүүлдэг. Тиймээс унтрааж байх хэрэгтэй байдаг. За гэвч аль ч тохиолдолд лог дээр алдаа бичигдэхгүй, мөн дэлгэцэнд харагдахгүй үед дараах кодыг ашиглан алдааг илрүүлж болдог юм байна.
<?php
// ----------------------------------------------------------------------------------------------------
// - Display Errors
// ----------------------------------------------------------------------------------------------------
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
// ----------------------------------------------------------------------------------------------------
// - Error Reporting
// ----------------------------------------------------------------------------------------------------
error_reporting(-1);
// ----------------------------------------------------------------------------------------------------
// - Shutdown Handler
// ----------------------------------------------------------------------------------------------------
function ShutdownHandler()
{
if(@is_array($error = @error_get_last()))
{
return(@call_user_func_array('ErrorHandler', $error));
};
return(TRUE);
};
register_shutdown_function('ShutdownHandler');
// ----------------------------------------------------------------------------------------------------
// - Error Handler
// ----------------------------------------------------------------------------------------------------
function ErrorHandler($type, $message, $file, $line)
{
$_ERRORS = Array(
0x0001 => 'E_ERROR',
0x0002 => 'E_WARNING',
0x0004 => 'E_PARSE',
0x0008 => 'E_NOTICE',
0x0010 => 'E_CORE_ERROR',
0x0020 => 'E_CORE_WARNING',
0x0040 => 'E_COMPILE_ERROR',
0x0080 => 'E_COMPILE_WARNING',
0x0100 => 'E_USER_ERROR',
0x0200 => 'E_USER_WARNING',
0x0400 => 'E_USER_NOTICE',
0x0800 => 'E_STRICT',
0x1000 => 'E_RECOVERABLE_ERROR',
0x2000 => 'E_DEPRECATED',
0x4000 => 'E_USER_DEPRECATED'
);
if(!@is_string($name = @array_search($type, @array_flip($_ERRORS))))
{
$name = 'E_UNKNOWN';
};
return(print(@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file), $line, $message)));
};
$old_error_handler = set_error_handler("ErrorHandler");
// other php code энд өөрийнхөө phpcode бичих юм уу энэ файлаа include хийж болно.
?>
Алдааг олсон эх сурвалж: [1]
Stackoverflow гэж үнэхээр буян нь дэлгэрсэн сайт шүү :)