반응형
파일을 수정한 적도 없는데, 어느 날 갑자기 게시판 글 수정 페이지에서 파일 에러 문구가 떴다.
Warning: Illegal string offset 'file' in /web/home/xxx/html/skin/board/basic/write.skin.php on line 156
Warning: Illegal string offset 'source' in /web/home/xxx/html/skin/board/basic/write.skin.php on line 157 Warning: Illegal string offset 'size' in /web/home/mymoodae/html/skin/board/basic/write.skin.php on line 157
글 신규 등록시에는 뜨지 않는 에러인데, 첨부된 파일이 없는데도 위와 같은 에러 메세지가 떴다.
Warning: Illegal string offset ' ' in
이 에러는 변수를 string을 배열 형태로 사용해서 생기는 오류라고 한다. 즉, 배열 변수가 아닌데 배열처럼 사용해서 그렇다고 한다. 주로 php5.X 버전에서 나타나는 오류라고 한다.
[방법 1] is_array() 를 통해 배열이 있는지 확인하기
if문에 is_array() 함수를 넣어 배열이 있는지 확인 후 값을 보여주면 된다.
Bad)
if($file[$i]['file']) {
blah blah
}
Good)
if(is_array($file) && $file[$i]['file']) {
blah blah
}
[방법2] isset() 를 통해 변수가 있는지 확인하기
isset () 은 변수가 설정되었는지 확인해주는 함수이다. 해당 변수가 있는지 확인 후, 변수가 있는 경우에만 값을 보여주도록 하면 경고문이 뜨지 않는다.
if(isset($file[$i]['file'])){
blah blah
}
나의 경우에는 그누보드 기본 게시판 스킨에서 오류가 발생하였는데,
두번째 해결방법으로 isset()함수를 넣어주어 오류를 해결하였다.
<?php if($w == 'u' && $file[$i]['file']) { ?> => <?php if($w == 'u' && isset($file[$i]['file'])) { ?>
<?php for ($i=0; $is_file && $i<$file_count; $i++) { ?>
<tr>
<th scope="row">파일 #<?php echo $i+1 ?></th>
<td>
<input type="file" name="bf_file[]" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file frm_input">
<?php if ($is_file_content) { ?>
<input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$i]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="frm_file frm_input" size="50">
<?php } ?>
<?php if($w == 'u' && isset($file[$i]['file'])) { ?>
<input type="checkbox" id="bf_file_del<?php echo $i ?>" name="bf_file_del[<?php echo $i; ?>]" value="1"> <label for="bf_file_del<?php echo $i ?>"><?php echo $file[$i]['source'].'('.$file[$i]['size'].')'; ?> 파일 삭제</label>
<?php } ?>
</td>
</tr>
<?php } ?>
반응형
'개발 > php' 카테고리의 다른 글
[php] iconv 함수 문자 인코딩 / 한글 깨짐 현상 해결 (2) | 2023.02.24 |
---|---|
[php] csv 파일 다운 한글 깨짐 해결 방법 (2) | 2023.02.17 |
[그누보드] 아이코드 SMS 문자보내기 (2) | 2023.02.02 |
[php] 에러메시지 나타내기 / php 오류 찾기 (3) | 2022.12.19 |
[php] PHPExcel 엑셀로 데이터 다운받기 (2) | 2022.11.04 |
fullcalendar 이벤트 표기 안되는 오류 (Fatal error: Cannot redeclare class Event) (2) | 2022.08.14 |
[php] strpos(), strrpos(), in_array() 특정 문자열 검색하기 (6) | 2021.05.26 |
[php] sql 구문으로 테이블 값 가져오는 방법 (2) | 2021.03.21 |