PHP 신입 트러블슈팅 면접

PHP 신입 · 취준 (0~1년) 트러블슈팅 3문항 조회수 65 · 2026-09-09 (수) 02:10:41
1 파일 업로드 장애
Easy

Q. 사용자가 이미지 파일을 업로드하려고 할 때 '파일이 업로드되지 않았습니다'라는 에러 메시지가 표시됩니다. $_FILES 배열을 확인했을 때 'error' 키의 값이 1로 나타났습니다. 이 문제의 원인과 해결 방법을 설명해주세요.

PHP 설정 파일에서 업로드 가능한 파일 크기 제한과 관련된 설정을 확인해보세요.

A. 모범답안

에러 코드 1은 UPLOAD_ERR_INI_SIZE로, 업로드한 파일 크기가 php.ini의 upload_max_filesize 설정값을 초과했다는 의미입니다. 먼저 phpinfo()나 php.ini 파일을 확인하여 현재 upload_max_filesize 값을 확인해야 합니다. 또한 post_max_size 값도 함께 확인해야 하는데, 이 값은 upload_max_filesize보다 크거나 같아야 합니다. 해결 방법은 php.ini에서 upload_max_filesize와 post_max_size 값을 적절히 증가시키고 웹 서버를 재시작하는 것입니다. 만약 서버 설정을 변경할 수 없다면, .htaccess 파일이나 ini_set() 함수로 런타임에 설정을 변경할 수 있습니다.

핵심 포인트
  • • 에러 코드 1은 upload_max_filesize 초과를 의미
  • • php.ini에서 upload_max_filesize와 post_max_size 확인 필요
  • • post_max_size는 upload_max_filesize보다 크거나 같아야 함
  • • 설정 변경 후 웹 서버 재시작 필요
답변에 넣으면 좋은 키워드
upload_max_filesize post_max_size php.ini UPLOAD_ERR_INI_SIZE phpinfo
실무에서는

사용자가 프로필 사진이나 첨부파일을 업로드할 때 파일 크기 제한으로 인한 업로드 실패는 가장 흔한 문제 중 하나입니다.

Follow-up 질문

만약 서버 관리 권한이 없어서 php.ini를 수정할 수 없는 상황이라면 어떤 대안을 사용할 수 있을까요?

2 문자 인코딩 오류
Medium

Q. 게시판에 한글로 작성된 게시글을 저장하고 다시 조회했을 때, 한글이 '???'나 깨진 문자로 표시됩니다. 데이터베이스에는 정상적으로 저장되어 있는 것을 확인했습니다. 이 문제를 해결하기 위해 확인해야 할 사항들을 순서대로 설명해주세요.

PHP 파일, 데이터베이스 연결, HTML 출력 각 단계에서의 문자 인코딩 설정을 확인해보세요.

A. 모범답안

이 문제는 문자 인코딩 불일치로 인해 발생합니다. 첫 번째로 PHP 파일 자체가 UTF-8로 저장되어 있는지 확인해야 합니다(BOM 없는 UTF-8 권장). 두 번째로 데이터베이스 연결 시 문자셋을 명시적으로 설정해야 하는데, mysqli_set_charset() 함수나 PDO의 DSN에 charset=utf8mb4를 추가합니다. 세 번째로 HTML 헤더에 meta charset='UTF-8' 태그가 있는지 확인합니다. 네 번째로 header() 함수로 Content-Type: text/html; charset=UTF-8을 설정할 수 있습니다. 마지막으로 데이터베이스 테이블과 컬럼의 collation이 utf8mb4_general_ci나 utf8mb4_unicode_ci로 설정되어 있는지 확인합니다.

핵심 포인트
  • • PHP 파일이 UTF-8로 저장되어 있는지 확인
  • • 데이터베이스 연결 시 charset 명시적 설정 필요
  • • HTML meta 태그와 HTTP 헤더에서 문자셋 선언
  • • 데이터베이스 테이블의 collation 확인
답변에 넣으면 좋은 키워드
UTF-8 utf8mb4 charset mysqli_set_charset Content-Type collation
실무에서는

다국어 지원 웹사이트나 이모지를 포함한 사용자 입력을 처리할 때 문자 인코딩 문제는 반드시 해결해야 하는 기본 과제입니다.

Follow-up 질문

utf8과 utf8mb4의 차이는 무엇이며, 어느 것을 사용하는 것이 더 좋을까요?

3 타임아웃 오류
Medium

Q. 외부 API를 호출하여 날씨 정보를 가져오는 페이지를 개발했는데, 페이지 로딩 중에 'Maximum execution time of 30 seconds exceeded' 에러가 발생하며 페이지가 중단됩니다. 외부 API 응답이 느린 상황에서 이 문제를 해결하기 위한 방법들을 설명해주세요.

스크립트 실행 시간 제한, API 호출 타임아웃 설정, 그리고 사용자 경험 개선 측면에서 생각해보세요.

A. 모범답안

이 문제는 PHP의 최대 실행 시간 제한과 외부 API의 느린 응답이 결합되어 발생합니다. 첫 번째 해결책은 set_time_limit() 함수로 스크립트 실행 시간을 늘리는 것이지만, 이는 근본적인 해결책이 아닙니다. 두 번째로 curl_setopt()의 CURLOPT_TIMEOUT 옵션으로 API 호출 자체에 타임아웃을 설정하여 무한정 대기하지 않도록 해야 합니다. 세 번째로 API 응답 실패 시 기본값이나 캐시된 데이터를 사용하는 예외 처리를 구현해야 합니다. 네 번째로 API 응답 결과를 일정 시간 동안 캐싱하여 매번 외부 호출을 하지 않도록 최적화할 수 있습니다. 마지막으로 비동기 처리나 백그라운드 작업으로 전환하여 사용자가 페이지 로딩을 기다리지 않도록 개선할 수 있습니다.

핵심 포인트
  • • CURLOPT_TIMEOUT으로 API 호출 타임아웃 설정
  • • API 실패 시 예외 처리 및 대체 데이터 제공
  • • 응답 결과 캐싱으로 반복 호출 최소화
  • • 비동기 처리나 백그라운드 작업 고려
답변에 넣으면 좋은 키워드
set_time_limit CURLOPT_TIMEOUT curl_setopt 캐싱 예외 처리 비동기
실무에서는

결제 게이트웨이, 소셜 로그인, 날씨/지도 API 등 외부 서비스 연동 시 네트워크 지연과 타임아웃 처리는 필수적인 고려사항입니다.

Follow-up 질문

외부 API 응답을 캐싱할 때 고려해야 할 사항은 무엇이 있을까요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!