언젠가부터 로컬환경에서 에디터를 통한 이미지업로드시 항상 에러가 났다. 그런데 정작 파일은 업로드디렉토리에 정상적으로 들어가 있다. 으잉?
뭐 서버쪽에서는 잘 돌아가니까 크게 신경을 안쓰다가 좀 찜찜해서 살펴봤다.
업로드시 에러가 나면 기본적으로는 일반 파일업로드와 마찬가지로 두가지를 중점으로 살펴본다.
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');
사실.. 이거 눈에 걸린지는 일년쯤 된거 같은데.. 딱히 일하는데 지장도 없고 해서 신경안쓰고 있었다;
그래도 찜찜한거 하나 없애놔서 살짝 좀 유쾌상쾌통쾌~!
'php' 카테고리의 다른 글
그누보드5 네이버 웍스모바일 등의 smtp 메일보내기 (0) | 2017.09.28 |
---|---|
php에서 POST로 값 전송시 잘림? (0) | 2015.09.22 |
IE8 이하에서 referer 유실 (0) | 2014.03.04 |
그누보드 카페24에서 두개이상의 도메인을 물린경우 세션(로그인/캡챠)문제 (0) | 2013.11.04 |