콘텐츠
워드프레스를 운영하다 보면 관리자 화면에서 가끔 “PHP 업데이트 권장” 메시지를 보게 된다. 나도 예전부터 계속 이 메시지를 보고 있었지만, 사이트가 정상적으로 동작하고 있었기 때문에 굳이 건드리지 않고 그냥 사용하고 있었다. 괜히 PHP 버전을 올렸다가 플러그인이나 테마가 깨지면 더 큰 일이 될 것 같아서 일부러 미루고 있었던 것도 사실이다.
하지만 PHP 7.4 버전이 보안 업데이트 지원이 종료되었다는 이야기를 보고 더 이상 미루면 안 되겠다는 생각이 들었다. 특히 워드프레스는 플러그인도 많고 외부 접근이 많은 구조라서, 보안 업데이트가 안 되는 상태로 계속 운영하는 것은 조금 위험할 수도 있겠다는 생각이 들었다.
그래서 이번 기회에 워드프레스 PHP 버전을 기존 7.4에서 최신 버전으로 업그레이드해 보기로 했다. 단순히 버전만 올리는 작업이라고 생각했는데, 실제로 해보니 확인해야 할 것들도 있었고, 속도나 일부 플러그인 동작에도 약간의 변화가 있었다. 이번 글에서는 워드프레스 PHP 버전을 업그레이드하면서 겪은 내용과 느낀 점을 정리해 보려고 한다.

PHP란?
PHP는 웹사이트를 동적으로 동작하게 만들기 위해 사용하는 서버 측 프로그래밍 언어다. 우리가 브라우저에서 어떤 페이지를 열었을 때 단순한 HTML 파일을 보여주는 것이 아니라, 로그인 정보 확인, 게시글 조회, 댓글 저장 같은 동작을 처리해 주는 역할을 PHP 같은 서버 언어가 담당한다. 워드프레스 역시 PHP로 만들어진 대표적인 웹 애플리케이션 중 하나이기 때문에, 서버에 설치된 PHP 버전에 따라 사이트의 성능이나 보안, 플러그인 호환성 등이 영향을 받게 된다.
PHP 버전이 오래되면 보안 업데이트가 더 이상 제공되지 않거나, 최신 워드프레스 및 플러그인이 제대로 동작하지 않을 수 있다. 반대로 PHP 버전을 최신으로 유지하면 보안 패치가 계속 제공되고, 처리 속도도 더 빨라지는 경우가 많다. 그래서 워드프레스를 운영할 때는 워드프레스 버전뿐만 아니라 PHP 버전도 함께 관리해 주는 것이 중요하다.
그중에서도 워드프레스를 운영하다 보면 functions.php 파일을 수정할 일이 생각보다 자주 생긴다. (참고: 워드프레스 테마 편집하기: functions.php 파일 편집하기) 간단한 기능을 추가하거나, 플러그인을 사용하지 않고 코드를 직접 추가해야 하는 경우 대부분 이 파일을 수정하게 된다. 테마의 동작을 바꾸거나, 특정 스크립트를 추가하거나, 관리자 기능을 조금 수정하는 작업들도 대부분 functions.php에서 처리하게 된다.
문제는 PHP 버전이 올라가면 기존에 아무 문제 없이 동작하던 코드가 경고를 발생시키거나, 경우에 따라서는 오류가 발생하기도 한다는 점이다. 특히 예전에 작성된 코드나 인터넷에서 그대로 가져온 코드들은 최신 PHP 문법 기준에서는 권장되지 않는 방식인 경우도 많아서, PHP 버전을 업데이트할 때는 이런 부분도 함께 점검할 필요가 있다. 그래서 단순히 서버에서 PHP 버전만 올리는 작업이 아니라, 워드프레스 테마나 플러그인, 그리고 functions.php에 추가해 둔 코드들도 같이 확인하는 과정이 필요했다.
PHP 7.4 와 8.3의 차이
PHP 7.4에서 8.3으로 넘어오면서 가장 큰 변화는 단순히 성능만 좋아진 게 아니라 문법, 오류 처리 방식, deprecated(앞으로 제거될 예정이니 사용하지 말라고 미리 안내하는 기능 또는 문법을 의미) 기능 제거가 많이 이루어졌다는 점이다.
먼저 가장 큰 차이는 성능이다. PHP 8부터 JIT(Just-In-Time) 컴파일러가 도입되면서 전체적으로 처리 속도가 꽤 빨라졌다. 워드프레스처럼 PHP 요청이 많은 구조에서는 페이지 로딩 속도나 관리자 화면 속도가 실제로 조금 빨라지는 경우가 많다. 특히 플러그인이 많은 사이트일수록 차이가 나는 편이다.
JIT 컴파일러
JIT(Just-In-Time) 컴파일러는 PHP 코드를 실행하면서 자주 사용되는 부분을 실시간으로 기계어로 변환하여 실행 속도를 높여주는 기술이다.
두 번째는 오류 처리 방식이 더 엄격해졌다. PHP 7에서는 경고(Warning)만 나오고 넘어가던 코드들이 PHP 8에서는 Fatal Error로 바뀌는 경우가 있다. 그래서 예전에 작성된 테마나 플러그인, functions.php 코드가 PHP 8에서 갑자기 사이트 오류를 일으키는 경우가 꽤 있다. 워드프레스 PHP 업데이트할 때 사이트가 갑자기 하얀 화면 되는 경우 대부분 이 문제 때문이다.
세 번째는 위에서도 언급했듯이 deprecated(더 이상 사용 권장되지 않는 기능)들이 많이 제거되었다는 점이다. 대표적으로 많이 걸리는 것들이 있는데, 예를 들면 null을 문자열 함수에 바로 넣는 경우, 오래된 방식의 생성자, 일부 문자열 처리 함수 사용 방식 등이 PHP 8에서 경고 또는 오류가 발생한다. 예전에 인터넷에서 복사해 온 코드들이 이런 부분에 많이 걸린다.
네 번째는 타입 관련 기능이 많이 강화되었다. PHP 8부터는 union type, mixed type 같은 타입 선언 기능이 추가되면서 코드 작성 방식이 조금 더 Java나 C# 같은 언어 느낌에 가까워졌다. 일반 워드프레스 사용자 입장에서는 크게 체감되지는 않지만, 테마나 플러그인 개발하는 사람들한테는 꽤 큰 변화다.
워드프레스 PHP 7.4 → 8.3 업그레이드
워드프레스 버전 업그레이드 한 이후 이 메시지가 출력 되기 시작했다. (워드프레스 업데이트 진행 (6.7.5 → 6.9.4 업데이트 진행 과정))
그래서 플러그인에 사용 된 코드가 호환되지 않아 출력 되는 것으로 추측하고 전체적으로 업데이트 하였지만 해결되지 않았다.
마지막으로 업데이트가 남아있던 테마를 업그레이드 했다. 테마는 업그레이드 시 자식 테마 관련 경고 메시지가 표시되어 있는 것처럼 직접 테마를 수정한 부분이 있다면 이를 자식 테마로 분리하지 않으면 모든 내용이 날아가게 된다. 자식 테마를 만드는 방법은 자식 테마(Child Theme)를 만드는 이유와 방법 포스팅에 작성해 두었으니 참고.

업데이트 후 PHP 관련 메시지가 사라졌다.
아스트라 테마 업데이트 후 PHP 관련 메시지가 사라진 이유
확실한 이유는 아니지만 워드프레스 6.9 부터 PHP 가 8.2~8.5 기준으로 동작할 때 테마 버전이 낮아 호환되지 않은 코드들이 잔재 하여 발생한 것으로 보인다. 위에 적은 것 처럼 성능, 보안, 호환성에 문제가 될 수 있으니 해당 메시지가 나온다면 얼른 해결하고 이를 조치하는



