PHP 문법오류인데 이걸 어떻게 고쳐야하나요?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
PHP 문법오류인데 이걸 어떻게 고쳐야하나요?

QA

PHP 문법오류인데 이걸 어떻게 고쳐야하나요?

본문

여기 질답에도 몇번 있는 경우인데 저와 같은 경우는 없는 것 같아 질문드립니다.

게시판 스킨의 write.skin.php 에서 사용하는 부분입니다.




<?php for ($i=1; $is_file && $i<$file_count; $i++) { ?>
        <?php $filename = $file[$i]['source']; 
            $ext = substr(strrchr($filename,"."),1);    
            $ext = strtolower($ext);    
            if($ext == 'jpg' || $ext == 'png' || $ext == 'gif') {?>
        <?php } ?>
     ...
    생략
     ...
<?php } ?>


해당 소스의 

<?php $filename = $file[$i]['source'];  

부분에서 에러 소스가 나옵니다.


PHP Warning:  Illegal string offset 'source' in  해당 파일의 해당 라인.. 


php버전에 따른 문법 오류라고 말씀들을 하시면서 

array를 이용하여 수정이 가능하다고 하는데 제가 잘 적용을 못하겠습니다.

  (전 현재 php 7.0.12 버전을 사용중입니다.)


이 부분을 어떻게 바꿔야 구문오류가 안나올까요?


이 질문에 댓글 쓰기 :

답변 2

$filename $file[$i]['source']; 


warning 은 경고의 의미라.. 치명적인 문제는 아닙니다.


$file[$i]['source']; 의 의미는..


DB 테이블 g5_board_file 에서 가져온 레코드셋에서, [source] 칼럼 내용입니다.


warning 이 발생했다는 것은 $file[$i] 가 정상적인 레코드셋이 아니기에.. source 칼럼도 없다는 의미일 가능성이 큽니다.


$file[$i] 를 제대로 가져오는지를 체크해보는 것이 좋습니다.


체크방법중의 하나는 print_r($file[$i]);


또는 print_r2($file[$i]); 로 정상적인 값이 들어있는 지를 확인해 보는 것입니다.

답변 감사합니다~
치명적인 문제도 아니고 서버에서 에러로그도 안나오게 해놓아서 사실 큰 신경은 안쓰이는데
에러로그를 볼때마다 꺼림칙해서 그러네요 ㅎㅎ
마라스컴퍼니님 말에 힌트를 얻어서 몇개 테스트 중입니다.
아마 $file['source']를 array한 값이 있나없나만 조건문을 걸어주면 될 것 같네요.
감사합니다~

문장만 보고 확인이 애매하긴 합니다만




<?php // $is_file 은 존재하니 다음문장으로 넘어간거 같은데
// 오류가 난다고 하신 부분에서
// $file 은 존재하나요?
for ($i=1; $is_file && $i<$file_count; $i++) { 
// 이 영역에서 체크해보시는게 좋을거 같네요
        if ($file && $file[$i] && $file[$i]['source']) {
            $filename = $file[$i]['source']; 
            $ext = substr(strrchr($filename,"."),1);    
            // 이쯤에서도 마찬가지로
            if ($ext) {
                $ext = strtolower($ext);    
                if($ext == 'jpg' || $ext == 'png' || $ext == 'gif') {
                } 
            }       }?>
     ...
    생략
     ...
<?php } ?>

위의 코드로 변경해서 한번 보시죠

중간에 ?> <?php 로 되는 부분은 굳이 닫고 열 필요 없어보여서 제거했습니다만
중간에 다른 코드/태그가 있으면 다시 적용하시고 진행해보세요
답변을 작성하시기 전에 로그인 해주세요.
전체 98
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT