BOARD

문제 해결

그누보드 글쓰기 썸네일 미리보기 적용 시 발생한 illegal string offset 에러 해결 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 16회 작성일 26-10-04 15:40

본문

그누보드 글쓰기 썸네일 미리보기 적용 시 발생한 illegal string offset 에러 해결 방법

그누보드 게시판 스킨에 첨부파일 이미지 썸네일 미리보기 기능을 적용할 때 나타나는 Warning: Illegal string offset 에러의 원인과 구체적인 해결 절차를 안내합니다.

write.skin.php에서 Illegal string offset 에러가 발생하는 원인

오토셋9, 그누보드 529 환경 등에서 첨부파일 이미지 썸네일 미리보기 기능을 스킨에 적용할 때 write.skin.php 파일의 특정 라인(예: 155라인 <?php $image = urlencode($file[$i]['file']);?>)에서 Warning: Illegal string offset 'file' 에러가 발생할 수 있습니다. 이 현상은 다음과 같은 원인으로 발생합니다.

  • 배포된 스킨 파일의 배열 인덱스 참조 방식 문제: 스킨 파일 내에서 첨부파일 배열 변수를 참조할 때 인덱스 처리 방식이나 데이터 구조가 일치하지 않아 발생합니다.
  • 글 수정 모드에서의 파일 정보 불러오기 누락: 게시판 글 수정 모드($w == 'u')에서 기존에 업로드된 파일 정보를 담고 있는 배열($file) 값이 스킨 폴더 내에서 올바르게 읽히지 않거나, 파일 정보를 가져오는 get_file() 함수 등의 연동 로직이 누락되어 배열 대신 문자열 오프셋 관련 경고를 유발하게 됩니다.

확인 및 해결을 위한 다음 행동

  • 스킨 파일 내에서 $file 변수가 올바른 배열 구조로 정의되어 있는지 확인합니다.
  • 글 수정 모드($w == 'u')에서 기존 첨부파일 정보를 불러오는 함수(get_file($bo_table, $wr_id))가 올바른 위치에 호출되고 있는지 점검합니다.

글 수정 페이지 첨부파일 썸네일 미리보기 구현 방법

그누보드 게시판 글 수정 모드($w == 'u')에서 기존에 첨부한 이미지를 썸네일로 미리 보려면 스킨 파일인 write.skin.php에 라이브러리 연동 코드와 함수 호출 코드를 추가해야 합니다.

1. 라이브러리 포함하기

write.skin.php 파일 상단의 ?> 안쪽에 썸네일 라이브러리 호출 코드를 추가합니다.

include_once(G5_LIB_PATH.'/thumbnail.lib.php');

2. 첨부파일 출력 부근에 미리보기 코드 추가

첨부 파일 업로드 및 출력 구간에서 아래 코드를 찾아 그 바로 밑에 추가합니다.

  • 확인 위치: write.skin.php 내 <?php if($w == 'u' && $file[$i]['file']) {?> 조건문 하단
  • 추가 코드:
<?php 
$file = get_file($bo_table, $wr_id);
$image = urlencode($file[$i]['file']);
$image_path = G5_DATA_PATH.'/file/'.$bo_table;
$image_url = G5_DATA_URL.'/file/'.$bo_table;
if (preg_match("/\.(gif|jpg|jpeg|png)$/i", $image)) {
 $thumb = thumbnail($image, $image_path, $image_path, 35, 35, false, true);
 $image_content = $image_url.'/'+$thumb;
 echo "<img src=".$image_content.">";
}
?>
  • 위 코드의 35, 35 숫자는 썸네일의 가로 및 세로 크기이므로 원하는 크기로 변경할 수 있습니다.

3. 적용 후 확인 사항

  • 이미지를 첨부하여 글을 작성한 뒤, 해당 글의 수정 페이지로 이동하여 지정한 크기의 썸네일이 정상적으로 생성되고 미리 보이는지 확인합니다.
  • 이미지 파일 확장자(gif, jpg, jpeg, png)인 경우에만 썸네일이 생성됩니다.
  • 최초 글 작성 상태에서는 아직 업로드된 파일 정보가 존재하지 않아 썸네일이 보이지 않는 것이 정상 동작입니다.

새글 작성 시 썸네일 미출력 현상 안내

최초 글 작성 상태에서 썸네일이 보이지 않는 현상은 오류가 아닌 정상적인 동작입니다.

원인 및 확인 내용

  • 업로드 프로세스 차이: 새글쓰기 화면에서는 아직 서버에 업로드되어 등록된 파일이 존재하지 않으므로 썸네일이 보이지 않는 것이 정상입니다.
  • 등록 과정: 글쓰기 모드에서 업로드할 파일을 선택하더라도 그 즉시 파일이 등록되는 것이 아니며, 글쓰기 버튼을 눌러 write_update 파일을 거쳐야 실제 데이터로 등록됩니다. 따라서 최초 작성 화면에서는 썸네일이 출력되지 않습니다.

첨부파일 문구 변경 방법

그누보드 게시판 글쓰기 폼에서 기본으로 출력되는 첨부파일 문구(파일 #1, 파일 #2 등)를 순번별로 다른 이름으로 변경하려면 게시판 스킨 폴더 내의 write.skin.php 파일을 수정합니다.

수정 위치 및 코드 적용

write.skin.php 파일에서 파일 반복 출력 구간을 찾아 조건문을 추가합니다.

  1. 기존 반복문 구간을 아래와 같이 수정합니다.
<?php for ($i=0; $is_file && $i<$file_count; $i++) {
 if ($i==0)
 $file_msg = "목록이미지";
 else if ($i==1)
 $file_msg = "상세이미지";
 else
 $file_msg = "파일 #".($i+1);
?>
  1. 파일 번호 출력 부근을 기존 고정 문구에서 변수 출력으로 변경합니다.
<?php echo $file_msg?>

조건 및 주의사항

  • 첨부 파일 순서는 1번이 아닌 0번부터 시작하므로 첫 번째 첨부파일 자리는 0번($i==0)입니다.
  • 필요에 따라 else if ($i==2) $file_msg = "출력문구"; 형태로 계속 추가하여 각 첨부파일의 안내 문구를 다르게 지정할 수 있습니다.

상황별 판단 및 대응 가이드

내 상황우선할 판단다음 행동
글 수정 모드($w == 'u')에서 Illegal string offset 'file' 에러가 발생할 때스킨 파일(write.skin.php) 내에서 첨부파일 배열을 참조하거나 출력하는 로직이 누락되었는지 확인상단에 include_once(G5_LIB_PATH.'/thumbnail.lib.php');를 추가하고, get_file($bo_table, $wr_id) 함수 호출 코드를 해당 위치에 포함시킴
최초 새글 작성 화면에서 첨부파일 썸네일 미리보기가 출력되지 않을 때업로드된 파일이 아직 등록되지 않은 정상 동작인지 구분최초 작성 시에는 파일 정보가 존재하지 않으므로 수정 모드에서만 썸네일이 출력되는 방식을 유지하거나 기능 한계를 인지함
첨부파일 라벨 문구(파일 #1, 파일 #2)를 변경하고 싶을 때순번별 인덱스($i)가 0부터 시작함을 기준 삼아 분기 처리write.skin.php의 for 문 내에서 if/else 조건문을 활용해 $file_msg 변수 값을 원하는 문구로 변경함

실전 FAQ

Q. 글 수정 모드 외에 최초 새글 작성 상태에서도 썸네일 미리보기를 바로 볼 수 없나요?

  • A: 새글쓰기 화면에서는 아직 서버에 파일이 실제 등록되지 않은 상태(write_update 거치기 전)이므로 즉시 썸네일로 미리 보는 것은 기본적으로 작동하지 않습니다. 이를 구현하려면 완전히 새로운 비동기 업로드 방식 등의 개발이 필요합니다.

Q. write.skin.php에서 get_file() 함수를 추가했는데도 썸네일이 생성되지 않거나 에러가 지속됩니다.

  • A: 이미지 확장자(gif, jpg, jpeg, png) 조건에 맞는지 확인하고, $bo_table과 $wr_id 값이 해당 스킨 파일 내에서 올바르게 전달되고 있는지 검토해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.