호스팅이 PHP 버전을 올린다고 할 때
PHP 7에서 mysql_* 함수가, PHP 8에서 each()·create_function()이 사라졌습니다. 버전만 올라가도 오래된 코드는 바로 오류로 멈춥니다.
지원이 끝난 PHP 버전에는 PHP2Shell 같은 취약점이 나와도 보안 패치가 나오지 않습니다. 지금 버전을 진단하고 PHP 8.3 이상으로 업그레이드하거나 새 구조로 옮기는 PHP 마이그레이션까지 한 팀이 진행합니다.
지금 방식 예시 화면: 호스팅이 PHP 버전을 올리자 관리자 화면이 치명적 오류로 멈추고, 메일함에는 구버전 지원 종료 안내가 와 있으며, 오래된 코드는 PHP 7과 8에서 사라진 함수를 그대로 쓰고 있습니다.
1PHP 버전을 올리자 관리자 화면이 멈춰요
3코드를 아는 사람이 없어요
2지원이 끝난 버전에서 돌아가요
바꾼 뒤 예시 화면: PHP·MySQL·문자셋을 지원되는 버전으로 옮기고, 사라진 함수 교체와 회원·주문 건수 대조, 화면별 동작 확인을 마친 전환 결과 리포트와 인수 문서 목록입니다.
1지원되는 PHP 8에서 동작해요
2인수 문서까지 남겨요
PHP 보안 이슈
2026년 10월 21일 공개된 CVE-2026-109618·109619입니다. 로그인 없이 외부에서 서버 명령을 실행할 수 있는 PHP 원격 코드 실행 취약점입니다. 보안 업데이트 전에 정보가 유출됐고, 미국 CISA는 2026년 10월 26일 실제 공격에 쓰인 취약점 목록에 올렸습니다.
버전별 조치 · CVSS 9.2 (critical)
KISA 권고 순서
출처 (2026년 11월 6일 확인): KISA 보호나라 대응 수칙 · php.net 보안 공지 · PHP 보안 권고(GitHub) · CISA 실제 악용 취약점 목록
이럴 때 검토하세요
PHP 7에서 mysql_* 함수가, PHP 8에서 each()·create_function()이 사라졌습니다. 버전만 올라가도 오래된 코드는 바로 오류로 멈춥니다.
PHP2Shell 같은 취약점이 나와도 8.1 이하에는 공식 패치가 나오지 않습니다. 8.2도 2026년 12월 31일에 보안 지원이 끝납니다.
스킨과 플러그인, 직접 고친 코드가 섞여 있으면 버전만 올려도 함께 깨집니다. 어디까지 살리고 무엇을 새로 만들지부터 나눕니다.
처음 만든 외주사나 담당자가 떠나 소스 구조와 서버 설정을 아무도 모른다면, 코드와 서버를 직접 진단해 인수 문서부터 만듭니다.
전환 방법
진단 결과에 따라 세 가지 중에서 고르고, 섞어 쓰기도 합니다. 처음부터 전부 새로 만들자고 권하지 않습니다.
방법 1
지금 코드를 지원되는 PHP 8.3 이상에서 돌아가게 고칩니다.
맞는 경우구조는 그대로 써도 되고, 취약점과 오류부터 먼저 막아야 할 때
방법 2
자주 바뀌는 기능부터 새 구조로 옮기고, 나머지는 그대로 둡니다.
맞는 경우사이트를 멈출 수 없고, 관리자나 주문처럼 일부 기능부터 바꿔야 할 때
방법 3
화면과 기능을 새로 만들고, 기존 데이터를 옮깁니다.
맞는 경우구조 자체가 한계이거나 관리자·모바일 화면을 새로 만들어야 할 때
확인 항목
회원·주문·게시글을 옮긴 뒤 테이블별 건수와 금액 합계를 원본과 맞춰 봅니다.
EUC-KR로 저장된 데이터를 UTF-8로 바꿀 때 깨지는 글자가 없는지 표본으로 확인합니다.
예전 방식으로 저장된 비밀번호는 가능한 경우 재설정 없이, 로그인할 때 최신 방식으로 바꿉니다.
PG 결제 모듈, 메일 발송, 크론 작업처럼 화면에 안 보이는 기능도 목록으로 만들어 확인합니다.
업로드한 파일과 이미지가 새 서버에서도 같은 주소로 열리는지 확인합니다.
기존 URL을 유지하거나 301로 연결하고, 사이트맵을 다시 제출합니다.
만드는 사람들
진행 과정
단계마다 무엇을 확인하고 무엇을 넘겨받는지 먼저 알려드립니다.
STEP 1
STEP 2
STEP 3
STEP 4
먼저 인터넷에 공개된 사이트의 실제 PHP 버전을 확인합니다. 패치 버전이 나온 8.2~8.5는 해당 버전 이상으로 업데이트한 뒤 PHP를 실행하는 웹 서비스를 모두 재시작하고, 공식 패치가 없는 8.1 이하는 지원 버전으로 전환해야 합니다. KISA는 업데이트 뒤 로그 점검과 DB 비밀번호·API 키 교체도 권고합니다.
서버에서 php -v 로 확인할 수 있지만 웹 서비스가 실제로 쓰는 PHP와 다를 수 있습니다. 호스팅 관리 화면이나 phpinfo 결과로 웹에서 쓰는 버전을 함께 확인하고, 확인용 phpinfo 파일은 바로 지웁니다. 한 서버에 PHP가 여러 개 설치돼 있으면 각각 확인합니다.
PHP 공식 업데이트는 없습니다. 리눅스 배포판·장기지원 업체의 보안 패치나 PHP 보안팀이 공개한 7.4·8.0·8.1용 소스 패치를 임시로 적용할 수 있지만, KISA도 이를 전환 전 임시 조치로 안내합니다. 지원 버전으로 옮기는 계획을 함께 세웁니다.
8.2.35 이상이면 PHP2Shell은 고쳐진 상태입니다. 다만 8.2는 2026년 12월 31일에 보안 지원이 끝나므로 8.3 이상으로 옮길 계획이 필요합니다.
화면과 기능 수, 사라진 함수가 쓰인 곳, 데이터 양과 외부 연동에 따라 달라집니다. 코드와 서버를 먼저 진단한 뒤 방법과 범위를 정하고 일정과 비용을 협의합니다. 진단 전에 고정 금액을 약속하지 않습니다.
구조를 그대로 써도 되고 오류와 보안 문제만 막으면 되는 경우는 버전 업그레이드로 충분합니다. 구조 자체가 한계이거나 화면을 새로 만들어야 하면 단계적 전환이나 재구축을 검토합니다. 진단 결과를 보고 함께 정합니다.
새 서버나 별도 환경에서 작업하고 검수를 마친 뒤 전환하므로 작업 기간 내내 멈추지는 않습니다. 전환할 때 마지막 데이터를 옮기는 점검 시간이 필요할 수 있으며, 시간대는 미리 협의합니다.
버전과 직접 고친 범위에 따라 다릅니다. 스킨·플러그인·수정한 코드를 확인한 뒤 최신 버전으로 올릴지, 필요한 기능만 새로 만들지 제안합니다.
기존 URL을 유지하거나 바뀌는 주소는 301로 연결하고 사이트맵을 다시 제출합니다. 검색엔진이 다시 평가하는 데 시간이 걸리며, 순위 유지를 보장하지는 않습니다.
예전 방식으로 저장된 비밀번호를 확인할 수 있다면, 회원이 로그인할 때 최신 방식으로 다시 저장해 재설정 없이 옮길 수 있습니다. 저장 방식은 진단에서 확인합니다.
서버 접근 권한이 있으면 코드와 설정을 직접 확인해 진단합니다. 작업이 끝나면 서버 구성, 배포 절차, DB 구조를 인수 문서로 남깁니다.
여기 없는 내용은 contact@alphaca.kr 로 물어보세요.
PHP 취약점·업그레이드 문의
PHP 버전을 몰라도 괜찮아요. 사이트 주소와 겪고 있는 문제를 알려주시면 진단할 범위부터 정리해 드립니다.
상담에서 함께 정하는 것
이메일로도 받습니다 · contact@alphaca.kr