테스트 사이트 - 개발 중인 베타 버전입니다

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

무와보 8년 전 조회 2,561

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

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



</p><p><?php for ($i=1; $is_file && $i<$file_count; $i++) { ?></p><p>        <?php $filename = $file[$i]['source']; </p><p>            $ext = substr(strrchr($filename,"."),1);    </p><p>            $ext = strtolower($ext);    </p><p>            if($ext == 'jpg' || $ext == 'png' || $ext == 'gif') {?></p><p>        <?php } ?></p><p>     ...</p><p>    생략</p><p>     ...</p><p><?php } ?></p><p><span style="font-size: 11pt;">


해당 소스의 

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

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


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


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

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

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


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


댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
8년 전

$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]); 로 정상적인 값이 들어있는 지를 확인해 보는 것입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

플래토
8년 전

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


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

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

중간에 ?> <?php 로 되는 부분은 굳이 닫고 열 필요 없어보여서 제거했습니다만
중간에 다른 코드/태그가 있으면 다시 적용하시고 진행해보세요
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

무와보
8년 전
말씀해주신대로 해보았으나 그 문제는 아니었나봅니다.
$filename = $file[$i]['source'];
에서 문법 오류인가본데 해결이 안되네요 ㅎㅎ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인