{"id":708,"date":"2002-12-09T02:48:33","date_gmt":"2002-12-09T02:48:33","guid":{"rendered":"http:\/\/dev.jblove.net\/?p=708"},"modified":"2002-12-09T02:48:33","modified_gmt":"2002-12-09T02:48:33","slug":"%ec%97%90%eb%9f%ac-%eb%94%94%eb%b2%84%ea%b9%85","status":"publish","type":"post","link":"https:\/\/jblove.net\/?p=708","title":{"rendered":"\uc5d0\ub7ec \ub514\ubc84\uae45"},"content":{"rendered":"<p>\n\uc544\ub798 \ubd80\ubd84\uc744 \ubcf5\uc0ac\ud574\uc11c \uc800\uc7a5\ud55c \ud6c4 include\ud574\uc11c \uc0ac\uc6a9\ud558\uc2dc\uba74 \ub429\ub2c8\ub2e4. \ud30c\uc77c 3\uac20\ub370\uc694. \uc911\uc694\ud55c \uac83\uc740 common.php\ubfd0\uc785\ub2c8\ub2e4. \ub098\uba38\uc9c0 \ub450\uac1c\ub294 \uc55e\uae00\uc5d0\uc11c \ubcf4\uc5ec\ub4dc\ub838\ub358 \uc5d0\ub7ec\ub97c \ub9cc\ub4e4\uc5b4 \ub0b4\uae30 \uc704\ud55c \ud30c\uc77c\ub4e4\uc785\ub2c8\ub2e4.<\/p>\n<p>testerror.php<br \/>\n<?<br \/>\ninclude(&#8216;.\/common.php&#8217;);<br \/>\ninclude(&#8216;.\/garbage.php&#8217;);<br \/>\n$h = &#8216;test&#8217;;<br \/>\nforeach($h as $key=>$val) {<br \/>\n     echo $val;<br \/>\n}<br \/>\n?><\/p>\n<p>\ngarbage.php<br \/>\n<?<br \/>\n$a = &#8216;hihi&#8217;;<br \/>\n$b = join(&#8221;, $a);<br \/>\n?><\/p>\n<p>common.php<br \/>\n<?<br \/>\n\/\/by hwang@yesnic.com<br \/>\n\/\/error report file version 1.0<br \/>\n\/\/\uc0ac\uc6a9\ud6c4 \ubb38\uc81c\uc810\uc774\ub098, \uc218\uc815\ub418\uc5c8\uc73c\uba74\ud558\ub294 \uc0ac\ud56d\uc774 \uc788\uc744 \ub54c\ub294 \uba54\uc77c \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<br \/>\n\/\/\uc774 \ud30c\uc77c\uc744 include\ud558\uba74, \uc880\ub354 \uad6c\uccb4\uc801\uc778 \uc5d0\ub7ec\uac00 \uba54\uc77c\ub85c \ub9ac\ud3ec\ud305\ub429\ub2c8\ub2e4.<\/p>\n<p>\/\/\uc774 \ud30c\uc77c\uc744 \ubb34\uc870\uac74 include\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4. \uace0\uce60\uac12\uc740 \ub531 \ub450\uac00\uc9c0\uc778\ub370,<br \/>\n\/\/\uccab\uc9f8\ub294 $__err_report\uac12\uc774\uace0, \ub458\uc9f8\ub294 $__admin_email \uac12\uc785\ub2c8\ub2e4.<br \/>\n\/\/\uc790\uc138\ud55c \uc124\uba85\uc740 \uac01 \ud574\ub2f9 \ubd80\ubd84\uc758 \uc8fc\uc11d\uc744 \ucc38\uace0 \ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>\/\/$__err_report <br \/>\n\/\/1. &#8216;all&#8217;\ub85c \uc124\uc815\ud558\uba74, \ud654\uba74\uc5d0\ub3c4 \ubcf4\uc5ec\uc8fc\uace0 \uba54\uc77c\ub85c\ub3c4 \uc5d0\ub7ec \ubcf4\uace0\ub97c \ud569\ub2c8\ub2e4.<br \/>\n\/\/2. &#8216;mail&#8217; \ub85c \uc124\uc815\ud558\uba74, \uba54\uc77c\ub9cc \ubcf4\ub0c5\ub2c8\ub2e4.<br \/>\n\/\/3. &#8216;show&#8217; \ub85c \uc124\uc815\ud558\uba74, \ud654\uba74\uc5d0\ub9cc \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<br \/>\n\/\/4. &#8216;hide&#8217; \uc5d0\ub7ec\ub97c \ubb34\uc2dc\ud569\ub2c8\ub2e4.<br \/>\n\/\/\uc774 \ud30c\uc77c\uc744 include\ud558\uae30 \uc804\uc5d0 \ud30c\uc77c\uc5d0 \ub530\ub77c \uc124\uc815\uc744 \ubc14\uafc0 \uc218 \uc788\uac8c \ud558\uae30 \uc704\ud574\uc11c \uc544\ub798\uc640 \uac19\uc774<br \/>\n\/\/\ud588\uc2b5\ub2c8\ub2e4. \ubbf8\ub9ac \uc124\uc815\uc744 \ud55c \ud6c4 include\ub97c \ud558\uba74, \ubbf8\ub9ac \uc124\uc815\ud55c \uac12\uc774 \uc6b0\uc120\uad8c\uc744 \uac00\uc9d1\ub2c8\ub2e4.<br \/>\nif(empty($__err_report)) {<br \/>\n       $__err_report = &#8216;show&#8217;;<br \/>\n}<\/p>\n<p>\/\/\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c, \uc5d0\ub7ec\ub97c \ubcf4\uace0\ud560 \uc774\uba54\uc77c \uc8fc\uc18c. \uc5ed\uc2dc \ubbf8\ub9ac \uc124\uc815\ud55c \uac12\uc774 \uc6b0\uc120\uad8c\uc744 \uac00\uc9d1\ub2c8\ub2e4.<br \/>\nif(empty($__admin_email)) {<br \/>\n       $__admin_email = &#8220;&#8221;;<br \/>\n}<\/p>\n<p>\n\/\/\ucd94\uac00\uc815\ubcf4\ub4e4.<br \/>\n\/\/\ud544\uc694\ud55c \uac83\ub4e4\uc774 \uc788\uc73c\uba74, arr\ud615\ud0dc\ub85c \uc544\ub798\uc640 \uac19\uc774 \ucd94\uac00\ud558\uc2ed\uc2dc\uc624.<br \/>\n$__err_array[&#8220;time&#8221;] = date(&#8216;Y-m-d H:i:s&#8217;, time());<br \/>\n$__err_array[&#8220;SERVER_NAME&#8221;] = $_SERVER[&#8220;SERVER_NAME&#8221;];<br \/>\n$__err_array[&#8220;PHP_SELF&#8221;] = $_SERVER[&#8220;PHP_SELF&#8221;];<br \/>\n$__err_array[&#8220;REMOTE_ADDR&#8221;] = $_SERVER[&#8220;REMOTE_ADDR&#8221;];<br \/>\n$__err_array[&#8220;SESSION&#8221;] = $_SESSION;<br \/>\n$__err_array[&#8220;POST&#8221;] = $_POST;<br \/>\n$__err_array[&#8220;GET&#8221;] = $_GET;<\/p>\n<p>\/\/\ud544\uc694\uc5d0 \ub530\ub77c \ub123\uc73c\uc154\ub3c4 \ub418\uc9c0\ub9cc, \uc774\uac70 \ub123\uc73c\uba74, \ud398\uc774\uc9c0 \ub85c\ub529\uc2dc\uac04\uc774 \uaf64\ub098 \uae38\uc5b4\uc9d1\ub2c8\ub2e4.<br \/>\n\/\/$__err_array[&#8220;REMOTE_HOST&#8221;] = gethostbyaddr($_SERVER[&#8220;REMOTE_ADDR&#8221;]);<\/p>\n<p>\/\/error handler\uc640 shutdown function\uc744 \ub4f1\ub85d\ud569\ub2c8\ub2e4.<br \/>\nset_error_handler(&#8220;_errorHandler&#8221;);<br \/>\nregister_shutdown_function(&#8220;_funClose&#8221;); <\/p>\n<p>function _funClose() {<br \/>\n       global  $__err_content;<br \/>\n       \/\/\uc5d0\ub7ec\uac00 \uc788\uc744 \uacbd\uc6b0\uc5d0\ub294 \uc5d0\ub7ec\uba54\uc2dc\uc9c0\ub97c \ub9cc\ub4e4\uc5b4 \uc8fc\uace0 \uadf8\ub807\uc9c0 \uc54a\uc744 \ub54c\ub294 \ud504\ub85c\uadf8\ub7a8\uc774 \uc885\ub8cc\ub429\ub2c8\ub2e4.<br \/>\n       if(isset($__err_content)) {<br \/>\n              global $__admin_email, $__err_report, $__err_array;<br \/>\n              $buf_arr = &#8220;<\/p>\n<table border =1 col = 2 width = 100%>&#8220;;              <br \/>\n              \/\/$__err_array\uc5d0\uc11c \uc124\uc815\ud55c \uac12\ub4e4\uc744 \ud14c\uc774\ube14\ub85c \ub9cc\ub4ed\ub2c8\ub2e4.<br \/>\n              foreach($__err_array as $key=>$val) {<br \/>\n                     $buf_arr .= &#8220;<\/p>\n<tr>\n<td>&#8220;;<br \/>\n                     if(is_array($val)) {<br \/>\n                            ob_start();<br \/>\n                            echo &#8220;<\/p>\n<pre>\";<br \/>\n                            var_dump($val);<br \/>\n                            $val = ob_get_contents();<br \/>\n                            echo \"<\/pre>\n<p>&#8220;;<br \/>\n                            ob_end_clean();<br \/>\n                            $buf_arr .= $key . &#8220;<\/td>\n<td>&#8221; . $val;<br \/>\n                     }elseif(empty($val)) {<br \/>\n                            $buf_arr .= $key . &#8220;<\/td>\n<td><strong> null<\/strong>&#8220;;<\/p>\n<p>                     }else{<br \/>\n                            $buf_arr .= $key . &#8220;<\/td>\n<td>&#8221; . $val;<br \/>\n                     }<br \/>\n                     $buf_arr .= &#8220;<\/td>\n<\/tr>\n<p>\n&#8220;;<br \/>\n              }<br \/>\n              $buf_arr .= &#8220;<\/table>\n<p>&#8220;;<br \/>\n              $__err_content = &#8220;<\/p>\n<table border = 1>\n<tr>\n<td>&#8221; . $__err_content. $buf_arr . &#8220;<\/td>\n<\/tr>\n<\/table>\n<p>\n&#8220;;<\/p>\n<p>              \/\/__err_report\uc758 \uac12\uc5d0 \ub530\ub77c \uba54\uc77c\uc744 \ubcf4\ub0b4\uac70\ub098 \ud654\uba74\uc5d0 \ubfcc\ub824\uc90d\ub2c8\ub2e4.<br \/>\n              if($__err_report === &#8216;all&#8217; || $__err_report === &#8216;mail&#8217;) {<br \/>\n                     if(!empty($__err_content)) {<br \/>\n                            mail($__admin_email, &#8220;ErrorReport&#8221;, $__err_content, &#8220;from:errorRepoter<br \/>\nContent-Type: text\/html;charset=EUC-KRn&#8221;);<br \/>\n                     }<br \/>\n              }<br \/>\n              if($__err_report === &#8216;all&#8217; || $__err_report === &#8216;show&#8217;) {<br \/>\n                     echo $__err_content;<br \/>\n              }<br \/>\n       }<br \/>\n}<\/p>\n<p>function _errorHandler ($errno, $errstr, $errfile, $errline) {<br \/>\n       global $__err_report, $__admin_email, $__err_content, $__err_array;<br \/>\n       $__err_array[&#8216;filename&#8217;][] = $errfile;<br \/>\n       \/\/$__err_report\uc774 &#8216;hide&#8217;\uac00 \uc544\ub2d0\uacbd\uc6b0, \uc5d0\ub7ec \uba54\uc2dc\uc9c0\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<br \/>\n    if (!($__err_report === &#8216;hide&#8217;)) {<br \/>\n        $str = &#8220;<\/p>\n<table border = 0 width = 100%>\n<tr>\n<td>&#8220;;<br \/>\n        switch ($errno) {<br \/>\n            case E_NOTICE :<br \/>\n            case E_USER_NOTICE :<br \/>\n                $str .= &#8220;<b>Notice<\/b>: &#8220;; <br \/>\n                break;<br \/>\n            case E_USER_WARNING :<br \/>\n            case E_WARNING :<br \/>\n                $str .= &#8220;<b>Warning<\/b>: &#8220;; <br \/>\n                break;<br \/>\n            case E_USER_ERROR :<br \/>\n            case E_ERROR :<br \/>\n                $str .= &#8220;<b>ERROR<\/b>: &#8220;; <br \/>\n                break;<br \/>\n            default :<br \/>\n                $str .= &#8220;<b>Unknown Error($errno)<\/b>: &#8220;; <br \/>\n                break;<br \/>\n        }<br \/>\n        $str .= &#8220;$errstr in <b>$errfile<\/b> on line <b>$errline<\/b><br \/>\n&#8220;;<br \/>\n        $str .= highlightFile($errfile, $errline, 5);<br \/>\n        $str .= &#8220;\n<\/td>\n<\/tr>\n<\/table>\n<p>\n&#8220;;<br \/>\n        $str .= &#8220;<br \/>&#8220;;<br \/>\n              \/\/\uc0dd\uc131\ub41c \uba54\uc2dc\uc9c0\ub97c global\ubcc0\uc218\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc5ec\ub7ec\uac1c\uc758 \uc5d0\ub7ec\uac00 \uc788\uc744 \ub54c\ub97c \ub300\ube44\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<br \/>\n              $__err_content .= $str;<br \/>\n    }<br \/>\n}<\/p>\n<p>function highlightFile($file, $err_line, $count)<br \/>\n{<br \/>\n    $ret = &#8221;;<br \/>\n       $file = trim($file);<br \/>\n    if (isset($file) &#038;&#038; file_exists($file)){<br \/>\n        \/\/ highlight_file\ub85c \uc9c0\uc815\ub41c \ud30c\uc77c\uc744 $data\uac12\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<br \/>\n        ob_start();<br \/>\n        highlight_file($file);<br \/>\n        $data = ob_get_contents();<br \/>\n        ob_end_clean();<br \/>\n        \/\/ new line\uc73c\ub85c \uac01\uac01\uc744 \uad6c\ubd84\ud558\uc5ec \ubc30\uc5f4\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<br \/>\n        $data_lines = explode(&#8216;<br \/>&#8216;,$data);<\/p>\n<p>        \/\/ \ubcf4\uc5ec\uc904 \ud30c\uc77c\uc758 \uc2dc\uc791 \ub77c\uc778\uacfc \ub05d \ub77c\uc778\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<br \/>\n              $from = $err_line &#8211; round($count\/2);<br \/>\n              $to = $from + $count;<br \/>\n        if ($from < 0) {<br \/>\n            $from  = 0;<br \/>\n              }<br \/>\n           if ($to > count($data_lines)) {<br \/>\n            $to = count($data_lines);<br \/>\n              }<br \/>\n        \/\/\uc9c0\uc815\ub41c \ub77c\uc778\ub9cc\ud07c\uc744 $ret\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<br \/>\n        for ($i = $from; $i < $to; $i++) {<br \/>\n            $k = $i + 1;<br \/>\n                     if($k==$err_line) {<br \/>\n                            $data_lines[$i] = &#8220;<strong>&#8220;.$data_lines[$i].&#8221;<\/strong>&#8220;;<br \/>\n                     }<br \/>\n            $ret .= &#8216;<\/p>\n<div style=\"white-space: nowrap;\"><code style=\"color: rgb(0,0,255)\">'.$k.'<\/code><span style=\"position:absolute; left:45; white-space: nowrap;\">&#8216;. $data_lines[$i] .&#8221;<\/span><\/div>\n<p>\n&#8220;;<br \/>\n            \/\/ \ud589\uc758 \uae00\uc790\uc218\uac00 \ub108\ubb34 \ub9ce\uc73c\uba74, \uc801\ub2f9\ud788 \uc9e4\ub77c\ub0c5\ub2c8\ub2e4.<br \/>\n            if (strlen($data_lines[$i]) > 1000) {<br \/>\n                $ret .= &#8216;<br \/>&#8216;;<br \/>\n            }<br \/>\n        }<br \/>\n    }<br \/>\n    return $ret;<br \/>\n}<\/p>\n<p>?> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc544\ub798 \ubd80\ubd84\uc744 \ubcf5\uc0ac\ud574\uc11c \uc800\uc7a5\ud55c \ud6c4 include\ud574\uc11c \uc0ac\uc6a9\ud558\uc2dc\uba74 \ub429\ub2c8\ub2e4. \ud30c\uc77c 3\uac20\ub370\uc694. \uc911\uc694\ud55c \uac83\uc740 common.php\ubfd0\uc785\ub2c8\ub2e4. \ub098\uba38\uc9c0 \ub450\uac1c\ub294 \uc55e\uae00\uc5d0\uc11c \ubcf4\uc5ec\ub4dc\ub838\ub358 \uc5d0\ub7ec\ub97c \ub9cc\ub4e4\uc5b4 \ub0b4\uae30 \uc704\ud55c \ud30c\uc77c\ub4e4\uc785\ub2c8\ub2e4. testerror.php garbage.php common.php<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[51],"tags":[],"class_list":["post-708","post","type-post","status-publish","format-standard","hentry","category-papa-php"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jblove.net\/index.php?rest_route=\/wp\/v2\/posts\/708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jblove.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jblove.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jblove.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jblove.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=708"}],"version-history":[{"count":0,"href":"https:\/\/jblove.net\/index.php?rest_route=\/wp\/v2\/posts\/708\/revisions"}],"wp:attachment":[{"href":"https:\/\/jblove.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jblove.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jblove.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}