도달 할 수없는 IP 주소로 fsockopen을 호출하면 PHP는 치명적 오류로 실행을 중지합니다. 그러나 호스트가 도달 할 수 없다는 것이 정상적인 상황입니다. 거기에 방법이있다, 그것은 의도적 인 동작 인 경우, 치명적인 오류의 경우에도 PHP를 막을 방지하는 방법이 있습니까?호스트에 연결할 수 없다면 fsockopen은 "연결할 수 없습니다."
프레임 워크를 사용하지 않고 직접 모든 오류를 처리합니다. 다음과 같이 정의된다
set_error_handler("errorHandler");
register_shutdown_function("fatalErrorHandler");
및 핸들러 : 나는이 같은 핸들러를 등록
function fatalErrorHandler()
{
$error = error_get_last();
if($error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
errorHandler($errno, "FATAL: " . $errstr, $errfile, $errline,get_defined_vars(),debug_backtrace());
}
}
function errorHandler($errno, $errstr, $errfile, $errline,$vars,$trace="")
{
// some formatting and checking
file_put_contents(dirname(__FILE__) . "/error/" . gmdate("YmdHis") . str_replace(".","",microtime(true)) . ".err"
,"<error_log_date>" . gmdate("YmdHis") . "</error_log_date><error_log_uid>{$uid}</error_log_uid>
<error_log_str>{$errstr}</error_log_str>
<error_log_file>{$errfile}</error_log_file>
<error_log_line>{$errline}</error_log_line>
<error_log_vars>{$vars}</error_log_vars>
<error_log_trace>{$trace}</error_log_trace>");
return true;
}
나는 두려워요. 프레임 워크를 사용하지 않고 set_error_handler 및 register_shutdown_function과 같은 내 자신의 프로 시저로 오류를 잡습니다. fscockopen() : 192.168.0.154:80 (연결 시간 초과)에 연결할 수 없습니다. ** – user3523426
@를 시도해 보셨습니까? – hek2mgl
오류 처리기의 코드를 표시 할 수 있습니까? – hek2mgl