PHP에서 XML 문서를 다룰 때 오류가 발생하면, 그 원인을 정확히 파악하는 것이 중요합니다. libxml_get_last_error() 함수는 libxml 오류 버퍼에 저장된 마지막 오류 정보를 가져오는 데 사용되는 내장 함수입니다.
함수 개요
libxml_get_last_error()는 libxml 라이브러리가 발생시킨 가장 최근의 오류를 LibXMLError 객체 형태로 반환합니다. 이 객체에는 오류 메시지, 오류 코드, 발생 위치(줄 번호, 컬럼), 심각도 수준 등 XML 파싱 문제를 디버깅하는 데 필요한 상세 정보가 담겨 있습니다.
문법
libxml_get_last_error()
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
오류가 존재하는 경우 LibXMLError 객체를 반환합니다. 오류가 없거나 실패한 경우 FALSE를 반환합니다.
반환된 오류 객체의 주요 속성
level: 오류의 심각도 (경고, 치명적 오류 등)
code: libxml 오류 코드
column: 오류가 발생한 열 위치
message: 오류에 대한 설명 메시지
file: 오류가 발생한 파일 이름 또는 URI
line: 오류가 발생한 줄 번호
사용 예제
다음은 잘못된 XML을 로드하고 마지막 오류를 확인하는 실용적인 예제입니다.
<?php
// 잘못된 XML 문자열
$xml = "<?xml version='1.0'?><user><name>John</name></users>";
// libxml 내부 오류 처리 활성화
libxml_use_internal_errors(true);
$doc = simplexml_load_string($xml);
if ($doc === false) {
$error = libxml_get_last_error();
echo "오류 메시지: " . $error->message;
echo "줄 번호: " . $error->line;
}
?>참고 사항
기본적으로 libxml 오류는 PHP 표준 오류로 출력됩니다. 오류를 직접 제어하려면 libxml_use_internal_errors(true)를 먼저 호출하여 내부 오류 처리를 활성화해야 합니다. 또한 여러 오류를 확인한 후에는 libxml_clear_errors()를 호출하여 오류 버퍼를 비워주는 것이 좋습니다.