오류 제어 연산자


PHP는 오류제어 연산자 @를 지원합니다.


오류코드


오류 제어 연산자를 코드 앞에 붙여서 사용하면 발생된 오류 메시지를 무시하게 됩니다.
오류 메시지를 숨기는 이유는 접속자에게 오류 코드를 감추어 보안의 유효성을 높이는 효과가 있습니다.

예제 파일 opr-01.php

<?php
	// php.ini의 수정 없이 화면에 에러 발생 시 출력할 수 있습니다.
	error_reporting(E_ALL);
	ini_set("display_errors", 1);

	// test.php는 실제 존재하지 않는 파일입니다.  
	@include('test.php'); 
?>

화면 출력

위의 예제는 실제 존재하지 않는 파일을 include하는 예제입니다.
실행 시 파일에 대한 오류 메시지를 출력합니다.

@include('test.php'); 형태로 @를 앞에 붙여서 실행하면 오류가 발생해도 화면에 출력하지 않습니다.

@ 연산자를 사용할 때는 주의해야 합니다. 만일, 잘못된 사용으로 인해 오류가 출력하지 않을 때 프로그램의 문제를 해결하기란 매우 어렵습니다.


오류메시지 저장


@로 인하여 오류가 발생한 경우는 별도로 오류 메시지를 $php_errormsg 변수에 저장해 놓습니다.

예제 파일 opr-02.php

<?php
	// php.ini의 수정 없이 화면에 에러 발생 시 출력할 수 있습니다.
	error_reporting(E_ALL);
	ini_set("display_errors", 1);

	$my_file = @file ('testing.txt') or die($php_errormsg." = 오류를 출력합니다.");
?>

결과

Notice: Undefined variable: php_errormsg in C:\php-7.1.4-Win32-VC14-x86\jinyphp\opr-02.php on line 6
= 오류를 출력합니다.

오류 발생시 $php_errormsg 변수는 바로 사용해야 합니다.
만일 여러 번의 오류가 발생할 경우 $php_errormsgs는 새로운 오류 메시지로 덮어쓰게 됩니다.


환경설정


$php_errormsgs를 사용하기 위해서는 PHP의 환경 설정 php.ini 에서

track_error = on

상태일 때만 가능합니다.

지금까지 다양한 연산자와 예제를 통해 알아봤습니다.
연산자는 프로그램을 만드는 가장 기본적인 문법과 기능입니다.

연산자를 잘 구분하고, 문법을 습득하는 것은 앞으로 프로그램 코딩을 하면서 문법적인 오류를 줄이는 중요한 기초가 됩니다.
차근차근 기초부터 학습을 하면 좀 더 향상된 코드를 만들 수 있을 것입니다.