Apache 2 + PHP цагаа дэлгэцийн алдаа
Дусал нэвтэрхий толь-с
14:18, 20 Зургаадугаар сар 2015-ий байдлаарх Almas (Яриа | оруулсан хувь нэмэр) хэрэглэгчийн хийсэн залруулга
Вэб хөгжүүлэх үед цагаан дэлгэц гараад код яаж бичсэнээс хамаараад алдаа гарах үе байдаг. Мэдээж 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"); // Энд код байх юм уу include require ашиглаж болно. ?>
Алдааг олсон эх сурвалж:
[1]