BOARD

자료·레퍼런스

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 18회 작성일 26-09-27 16:04

본문

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 = Off
    (에러를 보이게 하려면 display_errors = On으로 설정)
  • 스크립트 내 설정: PHP 코드 상단에 아래 코드를 추가하여 동적으로 제어할 수 있습니다.
    <?php
    ini_set('display_errors', '0');
    ?>

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.