PHP 업그레이드 뒤 기존 사이트에 오류가 생겼어요
PHP 업그레이드 뒤 기존 사이트가 깨질 때 버전·오류 원문·파일·줄·실행 환경을 비교하는 가이드입니다.
빠른 답변
PHP 업그레이드 뒤 오류가 생기면 이전·현재 PHP 버전, 웹 서버가 실제 사용하는 PHP 실행 환경, 오류 원문·파일·줄을 기록한 뒤 해당 호환성 변경을 확인해야 합니다. 운영 코드 전체를 한 번에 바꾸거나 버전을 즉시 되돌리지 않습니다.
- 적용 범위
- 이 가이드의 시작 증상과 각 분기 조건이 일치하는 경우
- 출처
- PHP
- 출처 확인일
- 2026-07-27
- 최종 검토
- 2026-08-05
- 수정일
- 2026-08-05
- 정정 이력
- 2026-07-29 이후 기록 없음
- 대상
- 사이트 운영자, 웹 에이전시, 프리랜서
이 가이드가 맞는 경우
- 애플리케이션 오류 메시지
상황별 다음 단계
Parse error: syntax error, unexpected 'new' (T_NEW) in /tmp/test.php on line 3
PHP 7에서 Parse error: syntax error, unexpected 'new' (T_NEW)가 표시되고 new 결과를 =&로 참조 대입합니다.
fatal error
PHP 7에서 set_exception_handler 처리기의 Exception 타입 선언과 Error 객체 발생 뒤 fatal error가 함께 나타납니다.
TypeError: count(): Argument #1 ($value) must be of type Countable|array
PHP 8에서 count()에 배열 또는 Countable이 아닌 값이 전달됐다는 TypeError가 표시됩니다.
TypeError: Cannot access offset of type string on string
PHP 8에서 문자열 오프셋을 배열 키처럼 사용했다는 TypeError가 표시됩니다.
호스팅사·개발자에게 전달할 내용
변경 전 기록
- 업그레이드 전후 PHP 버전, 오류 원문, 파일과 줄 번호, 재현 URL을 전달합니다.
- 실제 고객 데이터, 비밀키, 세션 값, 전체 운영 소스는 전달하지 않습니다.
알아둘 점
“PHP 8 전환 후 Fatal error”, “오래된 PHP 사이트 업그레이드 장애”로 검색하는 상황에서 사용합니다. PHP CLI 버전과 웹 요청을 처리하는 PHP-FPM·Apache·IIS 버전이 다를 수 있으므로 실제 요청 환경을 기록합니다.
먼저 기록할 것
- 업그레이드 전후 PHP 버전·실행 방식·웹 서버를 기록합니다.
- 오류 원문·파일·줄 번호·재현 URL·HTTP 상태를 기록합니다.
- 플러그인·테마·확장 모듈·ini 설정의 변경 범위를 기록합니다.
- 실제 고객 데이터·비밀키·세션 값·전체 운영 소스는 전달 자료에 포함하지 않습니다.
| 관찰값 | 다음 문서 |
|---|---|
PHP 7에서 Parse error: syntax error, unexpected 'new' (T_NEW) | PHP 7 unexpected new 오류 |
set_exception_handler와 Exception 타입 선언 뒤 fatal error | PHP 예외 처리기 타입 오류 |
PHP 8에서 count()에 Countable이 아닌 값 전달 | PHP 8 count 비호환 TypeError |
| PHP 8에서 문자열 오프셋을 배열 키처럼 사용 | PHP 8 문자열 오프셋 TypeError |
수정 후 재확인
- 복사본 또는 스테이징에서 한 변경만 적용하고 동일 URL·기능을 다시 실행합니다.
- PHP 오류 로그·HTTP 상태·핵심 기능 결과가 함께 정상인지 확인합니다.
- 다른 플러그인·테마·관리자 기능의 회귀 여부를 확인한 뒤 운영 반영 여부를 결정합니다.
참고 자료
PHP · 공식 자료 · 확인 범위: PHP 7에서는 new 결과의 참조 대입을 허용하지 않습니다., PHP 7의 Error 객체 변경은 Exception 타입 선언을 쓴 set_exception_handler 처리기에서 치명적 오류를 만들 수 있습니다. · 확인일: 2026-07-27