언젠가부터 로컬환경에서 에디터를 통한 이미지업로드시 항상 에러가 났다. 그런데 정작 파일은 업로드디렉토리에 정상적으로 들어가 있다. 으잉?

뭐 서버쪽에서는 잘 돌아가니까 크게 신경을 안쓰다가 좀 찜찜해서 살펴봤다.


업로드시 에러가 나면 기본적으로는 일반 파일업로드와 마찬가지로 두가지를 중점으로 살펴본다.

1. 업로드 디렉토리의 권한 (data/editor: 707 또는 777)

2. 호스팅용량초과 여부 (관리자에서 캐시,캡챠,썸네일파일들을 삭제하고나서 업로드가 되면 거의 이 이유)


그러나 윈도의 로컬환경에서는 저 두가지 다 해당사항이 없다.

분명 php쪽 에러가 나서 처리가 안됐을 것이다는 짐작하에 이래저래 뒤적거려가며 찍어보다가 찾았다.

smarteditor2/photo_uploader/js/basic.js 에 .on('fileuploadfail', function (e, data) {}) 에서

data.errorThrown.message 찍어보니 'Unexpected token < in JSON at position 0' 이런게 찍힌다.

json데이터로 리턴받는다고 했는데 json형식이 아니었던것다. 그럴만한 이유는 역시나 에러가 나서 일반텍스트가 찍혔겠지.

다시 data.jqXHR.responseText 이걸 찍어봤더니만

<br />?<b>Warning</b>:  Unexpected character in input:  '\' (ASCII=92) state=1 in <b>www\plugin\editor\smarteditor2\photo_uploader\popup\php\UploadHandler.php</b> on line <b>298</b><br />?<br />?<b>Warning</b>:  Unexpected character in input:  '\' (ASCII=92) state=1 in <b>www\plugin\editor\smarteditor2\photo_uploader\popup\php\UploadHandler.php</b> on line <b>764</b><br />?<br />?<b>Warning</b>:  Unexpected character in input:  '\' (ASCII=92) state=1 in <b>www\plugin\editor\smarteditor2\photo_uploader\popup\php\UploadHandler.php</b> on line <b>788</b><br />?<br />?<b>Warning</b>:  Unexpected character in input:  '\' (ASCII=92) state=1 in <b>www\plugin\editor\smarteditor2\photo_uploader\popup\php\UploadHandler.php</b> on line <b>790</b><br />?

...

이런것들이 잔뜩 찍힌다.

UploadHandler.php 파일을 열어보니

$file = new \stdClass();

요런 녀석들이다.

응? 이거 네임스페이스 아닌가?

전에도 Browscap 때문에 문제가 됐었는데 php버전문제다.

네임스페이스는 php 5.3 이상에서 지원되므로 5.3미만에서는 저런 경고가 뜬다.


내 로컬환경이 워낙에 오래전부터 유지되어온 관계로 apmsetup 2009년도 버전인가 그럴거다. 아하하 -_-;

php버전차이를 극뽁하기 위해 xampp도 병행사용하긴 하는데 익숙하다보니 apmsetup을 주로 쓴다;


여튼. 그누보드5.2.0 기준으로..

smarteditor2/photo_uploader/popup/php/UploadHandler.php 파일을 UploadHandler52.php로 복사하고 52파일을 열어 \stdClass(), \Imagick(), \ImagickPixel, \imagick, \Imagick() 들을 찾아 앞에 \를 지워준다.


같은 위치의 index.php 파일을 열어서 require문을 바꿔준다.

변경전

    require('UploadHandler.php');

변경후

    if (version_compare(phpversion(), '5.3', '<')) // namespace는 5.3.0 이상부터 지원
        require('UploadHandler52.php');
    else
        require('UploadHandler.php');



사실.. 이거 눈에 걸린지는 일년쯤 된거 같은데.. 딱히 일하는데 지장도 없고 해서 신경안쓰고 있었다;

그래도 찜찜한거 하나 없애놔서 살짝 좀 유쾌상쾌통쾌~!


블로그 이미지

먼지손

,