본문 바로가기
푸닥거리

PHP Fatal error: Call to undefined function utf8_encode()

by ┌(  ̄∇ ̄)┘™ 2022. 4. 17.
728x90

PHP 애플리케이션(특히 XML을 다루는 코드)을 실행할 때 이런 치명적 오류를 만나는 경우가 있습니다.

PHP Fatal error: Call to undefined function utf8_encode()

원인

utf8_encode()/utf8_decode() 함수는 PHP의 XML 확장 모듈(php-xml)에 포함되어 있습니다. CentOS 등에서 PHP를 최소 구성으로 설치하면 이 모듈이 빠져 있어, 함수를 호출하는 순간 "정의되지 않은 함수" 오류가 납니다.

해결 — php-xml 설치

CentOS/RHEL 계열에서는 php-xml 패키지를 설치하고 웹서버를 재시작합니다.

sudo yum install php-xml
sudo systemctl restart httpd

데비안/우분투 계열이라면 패키지 이름이 다릅니다.

sudo apt install php-xml
sudo systemctl restart apache2   # 또는 php-fpm 재시작

참고

  • 설치 후 php -m | grep xml로 모듈이 로드됐는지 확인할 수 있습니다.
  • 같은 이유로 simplexml, dom 관련 함수가 없다는 오류도 php-xml 설치로 해결되는 경우가 많습니다.
  • PHP 8.2 이상 주의utf8_encode()/utf8_decode()PHP 8.2에서 deprecated, 9.0에서 제거 예정입니다. 신규 코드에서는 mb_convert_encoding($str, "UTF-8", "ISO-8859-1")로 대체하는 것이 좋습니다.
  • FPM을 쓴다면 httpd/apache2가 아니라 php-fpm 서비스를 재시작해야 반영됩니다.
 

CentOS php-xml 설치 - 제타위키

 

zetawiki.com

728x90

댓글