PHP 에러 제어 연산자(@) 사용법과 MySQL 에러 메시지 숨기기
페이지 정보

본문
PHP 에러 제어 연산자(@) 사용법과 MySQL 에러 메시지 숨기기
그누보드 운영 및 PHP 개발 중 발생하는 MySQL 에러 메시지를 숨기기 위해 에러 제어 연산자(@)를 사용하는 방법과 주의해야 할 점을 살펴봅니다.
PHP 에러 제어 연산자(@) 사용법 및 주의사항
PHP에서 함수나 쿼리 실행 시 발생하는 에러 메시지를 웹페이지에 노출되지 않도록 숨기려면, 대상 함수나 식 앞에 @(골뱅이) 에러 제어 연산자를 붙여 사용합니다.
사용 방법
함수명이나 변수명 앞에 @ 기호를 추가하면 해당 식에 의해 생성되는 에러 메시지가 무시되며 화면에 표시되지 않습니다.
- 적용 예시:
@mysql_query()@mysql_fetch_array()@mysql_num_rows()@$test['5']
주의사항
@연산자는 에러 메시지를 화면에서 가려줄 뿐, 쿼리 결과가 유효하지 않거나 잘못된 인자 전달 등 근본적인 원인을 해결하는 것이 아닌 임시 방편입니다.- PHP 8.0 이상에서는
@연산자의 동작이 변경되어, 스크립트 실행을 중단시키는 치명적인 오류(Fatal Error)까지 억제하지 못할 수 있습니다. 따라서 에러를 단순히 숨기기보다 코드의 논리적 오류를 수정하는 것이 권장됩니다.
PHP 에러 제어 연산자(@) 사용 시 주의사항
PHP에서 함수나 쿼리 실행 시 앞에 @(골뱅이) 연산자를 붙이면 해당 식에서 발생하는 모든 에러 메시지를 무시하고 웹페이지에 표시되지 않게 억제할 수 있습니다. 그러나 이를 사용할 때는 다음과 같은 치명적인 부작용과 한계가 있습니다.
주요 부작용 및 한계
- 스크립트의 무음 종료: 현재
@오류 제어 연산자는 스크립트 실행을 종료하는 치명적인 오류에 대한 오류 보고까지 꺼버립니다. 대상 함수가 존재하지 않거나 오타가 난 경우, 아무런 이유나 경고 지시도 없이 그 위치에서 스크립트가 곧바로 종료될 수 있습니다. - 근본적인 원인 은폐: 에러 메시지를 화면에서 숨겨주지만, 쿼리 결과가 유효하지 않거나 코드에 문제가 있는 근본적인 원인을 해결하는 것이 아니라 불의를 눈감고 넘어가는 임시 방편에 불과합니다.
적용 범위 및 참고 사항
@연산자는 변수, 함수,include호출, 상수 등 어떠한 값을 얻을 수 있는 식 앞에 붙일 수 있습니다.- 함수 정의, 클래스 정의,
if와foreach같은 조건부 구문에는 붙일 수 없습니다.
PHP 에러 메시지 제어 방법
PHP 환경에서 MySQL 쿼리 실행 시 발생하는 에러 메시지를 숨기기 위해 함수 앞에 @ 연산자를 붙이거나, php.ini 및 스크립트 설정을 통해 전역으로 에러 출력을 제어할 수 있습니다.
1. @(골뱅이) 에러 제어 연산자 사용
PHP 식 앞에 @ 연산자를 붙이면 해당 식에 의해 생성되는 에러 메시지가 무시되며 웹페이지에 표시되지 않습니다.
- 적용 예시:
@mysql_query(),@mysql_fetch_array(),@mysql_num_rows() - 주의사항: 에러 메시지를 단순히 감추는 임시 방편이므로 근본적인 원인(유효하지 않은 쿼리 결과 등)을 해결하는 것이 바람직합니다.
2. php.ini 및 스크립트를 통한 전역 에러 출력 제어
코드마다 @를 붙이지 않고 PHP 환경 파일이나 페이지 상단에서 에러 출력을 제어할 수 있습니다.
- php.ini 설정:
php.ini파일에서 아래와 같이 설정하여 페이지 전체의 에러 메시지 노출을 제어합니다.
(에러를 보이게 하려면display_errors = Offdisplay_errors = On으로 설정) - 스크립트 내 설정: PHP 코드 상단에 아래 코드를 추가하여 동적으로 제어할 수 있습니다.
<?php ini_set('display_errors', '0'); ?>
함께 보면 좋은 글
- PHP 파일 입출력 및 fpassthru 함수 사용법과 특성
- PHP MySQL 데이터 패치 함수 비교: mysqlfetchrow와 mysqlfetcharray 차이점과 올바른 사용법
- PHP MySQL 데이터 삭제 로직 구현 가이드
참고자료
기타 참고자료
- 이전글PHP 문자열 내 큰따옴표를 작은따옴표로 치환할 때 발생하는 문법 오류 해결 26.09.27
- 다음글PHP 주민번호 기반 만 나이 계산 함수 구현 및 그누보드 적용 방법 26.09.26
댓글목록
등록된 댓글이 없습니다.