그누보드 글쓰기 썸네일 미리보기 적용 시 발생한 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 파일에서 파일 반복 출력 구간을 찾아 조건문을 추가합니다.
- 기존 반복문 구간을 아래와 같이 수정합니다.
<?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);
?>
- 파일 번호 출력 부근을 기존 고정 문구에서 변수 출력으로 변경합니다.
<?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값이 해당 스킨 파일 내에서 올바르게 전달되고 있는지 검토해야 합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글PHP 한글 파일명 filesize stat failed 오류 해결 방법 26.10.04
- 다음글그누보드 자동등록방지 숫자가 보이지 않을 때 세션 폴더 권한 오류 해결 방법 26.10.03
댓글목록
등록된 댓글이 없습니다.