TypeError: count(): Argument #1 ($value) must be of type Countable|array
PHP 8 전환 뒤 count()에 배열이나 Countable이 아닌 값이 전달됐는지 확인합니다.
빠른 답변
- 우선 확인할 원인
- 오류 위치의 PHP 버전과 실제 값의 타입을 확인하고, 원인 확인 없이 강제 형변환하지 않습니다.
- 먼저 확인할 항목
- 오류 원문에 count()와 Countable|array 조건이 있는지 확인합니다.
- 적용 범위
- 현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
- 출처 확인일
- 2026-07-30
- 최종 검토
- 2026-07-30
- 수정일
- 2026-07-30
- 정정 이력
- 2026-07-29 이후 기록 없음
- 관련 기술
현재 증상
- PHP 치명적 오류
먼저 확인할 항목
오류 원문에 count()와 Countable|array 조건이 있는지 확인합니다.
count()에 전달된 값의 실제 타입과 PHP 버전을 기록합니다.
호출 직전 값이 배열·Countable인지 확인합니다.
피해야 할 조치
주의
- 오류 원문·시각·환경만 기록하고 비밀번호, 토큰, 세션 쿠키, 결제 정보, 개인정보는 기록하지 않습니다.
- 운영 설정은 현재 값을 보관한 뒤 한 번에 한 항목만 수정합니다.
환경별 원인과 조치
적용 범위
이 문서는 관찰값이 함께 확인될 때 적용합니다. 오류 문구 하나만으로 원인을 확정하지 않습니다.
확인 절차
- 오류 원문에 count()와 Countable|array 조건이 있는지 확인합니다.
- count()에 전달된 값의 실제 타입과 PHP 버전을 기록합니다.
- 호출 직전 값이 배열·Countable인지 확인합니다.
다음 조치
- 값의 타입에 맞는 검사와 분기를 추가합니다.
- 오류 위치와 무관한 전역 형변환을 적용하지 않습니다.
- 같은 입력으로 PHP 8에서 결과가 유지되는지 확인합니다.
주의
- 운영 데이터와 인증 정보를 문서·로그·문의 자료에 포함하지 않습니다.
- 조건이 일치하지 않으면 이 문서의 조치를 적용하지 말고 원문과 환경을 보존합니다.
공식 근거
참고 자료
PHP 8.0 backward incompatible changes (새 창에서 열림)
The PHP Group · 공식 자료 · 확인 범위: PHP 8에서는 count()에 배열 또는 Countable이 아닌 값을 전달하면 TypeError가 발생합니다., PHP 공식 문서는 마이그레이션 전 타입 동작을 확인하도록 안내합니다. · 확인일: 2026-07-30