Latest web development tutorials
×

PHP 코스

PHP 코스 PHP 간략한 소개 PHP 설치 PHP 문법 PHP 변수 PHP echo/print PHP 데이터 유형 PHP 상수 PHP 현 PHP 운영자 PHP If...Else PHP Switch PHP 배열 PHP 배열을 정렬 PHP 자동 전역 PHP While 순환 PHP For 순환 PHP 기능 PHP 매직 변수 PHP 네임 스페이스 PHP 객체 지향

PHP 형태

PHP 형태 PHP 폼 인증 PHP 형태 - 필수 입력 사항 PHP 형태 - 확인 이메일 및 URL PHP 완전한 형태의 인스턴스 PHP $_GET 변수 PHP $_POST 변수

PHP 고급 자습서

PHP 다차원 배열 PHP 날짜 PHP 포함 PHP 파일 PHP 파일 업로드 PHP Cookie PHP Session PHP E-mail PHP 보안 E-mail PHP Error PHP Exception PHP 필터 PHP 고급 필터 PHP JSON

PHP 7 새로운 기능

PHP 7 새로운 기능

PHP 데이터베이스

PHP MySQL 간략한 소개 PHP MySQL 연결 PHP MySQL 데이터베이스 만들기 PHP MySQL 데이터 테이블 만들기 PHP MySQL 데이터를 삽입 PHP MySQL 여러 데이터를 삽입 PHP MySQL 문 준비 PHP MySQL 데이터 읽기 PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 간략한 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 실시간 검색 AJAX RSS Reader AJAX 투표

PHP 참조 설명서

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 이미지 처리 PHP RESTful

PHP 오류 처리

PHP에서 기본 오류 처리는 매우 간단합니다. 에러 메시지가 브라우저, 파일 이름, 라인 번호 및 오류 메시지의 설명을 메시지로 전송된다.


PHP 오류 처리

스크립트와 웹 응용 프로그램을 만들 때, 오류 처리는 중요한 부분입니다. 코드 오류 검사 코드가 부족하면 프로그램이 아주 전문가가 아닌뿐만 아니라, 보안 위험에 문을 열고있다.

이 튜토리얼은 가장 중요한 PHP의 에러 검출 방법의 일부를 소개합니다.

우리는 당신의 다른 오류 처리 방법을 설명합니다 :

  • 간단한 "다이 ()"문
  • 사용자 지정 오류 및 오류 트리거
  • 오류보고

기본 오류 처리 : 다이를 사용하여 () 함수

첫 번째 예는 텍스트 파일을 여는 간단한 스크립트를 보여줍니다

<?php
$file=fopen("welcome.txt","r");
?>

파일이 존재하지 않는 경우이 같은 오류가 발생합니다 :

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in /www/w3big/test/test.php on line 2

파일에 액세스하는 존재하기 전에 위의 유사한 오류 메시지를 받고에서 사용자를 방지하기 위해 파일을 검사 :

<?php
if(!file_exists("welcome.txt"))
{
	die("文件不存在");
}
else
{
	$file=fopen("welcome.txt","r");
}
?>

파일이 존재하지 않는 경우에 지금, 당신은 유사한이 오류 메시지를 얻을 것이다 :

文件不存在

이 오류 후 스크립트 종료 간단한 에러 처리 메커니즘을 사용하기 때문에 기존의 코드에 비해 위의 코드,보다 효율적이다.

그러나 단순히 스크립트가 항상 옳은 방법이 아니다 종료합니다. 우리가 오류를 처리하기위한 대안 PHP 함수를 살펴 보자.


사용자 지정 오류 처리기 만들기

사용자 지정 오류 처리기를 작성하는 것은 매우 간단합니다. 우리는 단순히 오류가 발생했을 때 호출 할 수있는 특수 기능을 만들 수 있습니다.

이 기능은 적어도 두 개의 매개 변수 (에러 레벨과 에러 메시지)를 처리 할 수 ​​있어야하지만, 다섯 개의 매개 변수를 받아 들일 수 있습니다 (옵션 : 파일, 줄 번호, 오류 컨텍스트) :

문법

error_function(error_level,error_message,
error_file,error_line,error_context)
매개 변수 기술
error_level 필요합니다. 오류는 사용자 정의 오류보고 수준으로 정의된다. 그것은 숫자 여야합니다. 오류보고 수준 : 다음 표를 참조하십시오.
ERROR_MESSAGE 필요합니다. 사용자 정의 오류 오류 메시지가 말했다.
error_file 선택 사항. 파일 이름 지정 오류가 발생했습니다.
ERROR_LINE 선택 사항. 소정의 줄 번호 오류가 발생했습니다.
error_context 선택 사항. 오류가 사용하고 그 값에 발생했을 때 모든 변수를 포함하는 배열을 지정합니다.

오류보고 수준

이러한 오류 보고서 수준은 오류의 다른 유형 처리기 사용자 지정 처리 오류입니다 :

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

이제, 오류를 처리하는 기능을 만들 수 있습니다 :

function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

위의 코드는 간단한 에러 처리 기능이다. 트리거 될 때, 상기 에러 레벨의 에러 메시지를 얻을 것이다. 그런 다음 오류 레벨과 메시지를 출력하고 스크립트를 종료합니다.

이제, 우리는 에러 처리 기능을 만들었습니다, 우리는 때의 기능을 트리거하는 결정해야합니다.


설정 오류 처리기

PHP의 기본 오류 처리기는 내장 오류 처리기입니다. 우리는 스크립트의 기본 오류 처리기 기간 위의 기능을 변환하는 것입니다.

그것은 약간의 오차에만 적용되도록 오류 처리기를 수정할 수 있도록 스크립트는 다른 오류를 처리하는 여러 가지 방법이 될 수 있습니다. 그러나,이 경우에, 우리는 에러 에러 처리기 우리의 정의를 위해 사용하고자 :

set_error_handler("customError");

우리는 우리의 사용자 정의 함수가 모든 오류를 처리하는 때문에 set_error_handler ()는 하나의 매개 변수가 필요 오류 레벨을 지정하는 두 번째 인수를 추가 할 수 있습니다.

존재하지 않는 출력 변수에 노력함으로써, 오류 핸들러를 테스트합니다 :

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr";
}

// 设置错误处理函数
set_error_handler("customError");

// 触发错误
echo($test);
?>

다음 위 코드의 출력은 :

Error: [8] Undefined variable: test


트리거 오류

에러가 유용 할 때 사용자 입력이 발생하지 않는 경우, 사용자 입력 위치 정보의 스크립트에서. PHP에서는이이 완료 trigger_error () 함수를 통해 실행된다.

"테스트"변수가 "1"보다 큰 경우,이 예에서, 오류가 발생

<?php
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1");
}
?>

다음 위 코드의 출력은 :

Notice: 变量值必须小于等于 1
in /www/test/w3big.php on line 5

당신은 어디 스크립트에서 오류를 트리거 할 수 있습니다 두 번째 매개 변수를 추가하여, 당신은 오류 레벨 트리거를 지정할 수 있습니다.

오류의 가능한 유형 :

  • E_USER_ERROR - 치명적인 사용자가 생성 한 런타임 오류가 발생했습니다. 복구 할 수없는 오류가 발생했습니다. 스크립트 실행이 중단됩니다.
  • E_USER_WARNING - 사용자가 생성 한 치명적이지 런타임 경고. 스크립트 실행이 중단되지 않습니다.
  • E_USER_NOTICE - 기본. 사용자가 생성 한 런타임 통지. 스크립트가 발견했을 때 오류가 발생할 수 있습니다뿐만 아니라 정상 작동 스크립트에서 발생할 수 있습니다.

"테스트"변수는보다 큰 경우,이 예에서, "1", E_USER_WARNING 오류가 발생한다. 이 E_USER_WARNING가 발생하면, 우리는 우리의 사용자 지정 오류 처리기를 사용하여 스크립트를 종료합니다 :

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

다음 위 코드의 출력은 :

Error: [512] 变量值必须小于等于 1
脚本结束

이제 우리는 자신의 오류를 생성하는 방법을 배웠으니, 그들를 실행하는 방법의 오류 로그를 살펴 보자.


오류 로그

기본의 경우,의 error_log 구성이 php.ini 파일에서 설정에 따라, PHP는 기록 또는 파일 서버에 오류 기록 시스템을 보냅니다. error_log () 함수를 이용 함으로서, 지정된 파일 또는 원격 대상에 오류 로그를 보낼 수있는 기능.

그것은 이메일로 자신에게 오류 메시지를 전송하는 것은 특정 오류 알림을받을 수있는 좋은 방법입니다.

오류 메시지는 전자 메일로 전송

특정 오류가 발생하는 경우 다음 예제에서, 우리는 오류 메시지와 함께 전자 메일을 보내고 스크립트를 종료합니다 :

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "已通知网站管理员";
	error_log("Error: [$errno] $errstr",1,
	"[email protected]","From: [email protected]");
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

다음 위 코드의 출력은 :

Error: [512] 变量值必须小于等于 1
已通知网站管理员

다음과 같이 위의 코드에서받은 메시지는 다음과 같습니다

Error: [512] 变量值必须小于等于 1

이 방법은 모든 에러 적합하지 않다. 기존의 오류는 서버에 기록에 대한 기본 PHP 로깅 시스템을 사용하여 수 있어야합니다.