스티커 모듈 스티커 등록시 file is not exist 발생 문제
CMS/프레임워크 | XE 1.x |
---|---|
개발 언어 | PHP 7.2 |
https://github.com/huhani/xe-sticker/blob/master/sticker.controller.php#L661-L662
스티커 모듈을 설치하고 스티커 세트를 등록하려고 파일 업로드를 한 후 등록 버튼을 누르면..
위 링크의 코드 메시지가 발생하고 중지 됩니다.
if(!$obj->sticker_main_file || !$obj->sticker_file)
위 두 가지 조건 중 어느것인지 확인해 보기 위해 한가지씩 제거를 해 보고 테스트를 해보니
if(!$obj->sticker_file)
이부분이 문제로 확인 되었습니다. $obj->sticker_file 값이 없는 것으로 추정이 됩니다.
위 조건을 제거하고 시도해 보면..
https://github.com/huhani/xe-sticker/blob/master/sticker.controller.php#L671-L673
위 코드에 의해 file_is_not_enough 가 발생합니다.
$sticker_count 도 제대로 인식하지 못하고 있는 것 같구요..
아래 부분이 관련이 있는건지 모르겠습니다.
https://github.com/huhani/xe-sticker/blob/master/sticker.controller.php#L741-L761
댓글 22
어째서인지는 좀 더 확인해봐야겠지만 확인되는대로 패치하겠습니다.
https://github.com/xpressengine/xe-core/blob/6c018e0e2d0dc75ad01c0f881d45d56a5a643097/classes/context/Context.class.php#L1500,L1513
확인을 해보니
xe 코어에서 파일 배열 데이터를 가져올때 만약 배열이 비어있는 경우엔 $_FILES 배열의 값을 날려버려서 발생한 문제더군요..
라이믹스에선 이 부분에 대해 대처가 되어있어서 정상작동 하는걸로 보여집니다.
https://github.com/rhymix/rhymix/blob/1d22aa9a448c84cf09548c884b11cd378a1610df/classes/context/Context.class.php#L1274,L1297
일단 임시조치 방법은
if($val['name'] === '' && $val['size'] == 0)
{
continue;
}
이 코드를 첫 번째 링크에 있는 파일(/classes/context/Context.class.php)을 두 번째 링크에 있는것 처럼 if문 안쪽과 else문 안쪽의 foreach문에다 삽입하시면 됩니다.
모듈을 만들때 xe환경에서 만들었었는데 지금와서 작동을 안할줄이야 ㅠㅠ
이 문제에 대해 깃허브다에 이슈를 넣어야겠네요.
최고관리자계정이 아닌 일반계정으로 등록시 위 조치가 적용되지 않는데요. 혹시 일반회원에게도 적용하려면 어디를 수정해야 할까요?
https://github.com/rhymix/rhymix/blob/1d22aa9a448c84cf09548c884b11cd378a1610df/classes/context/Context.class.php#L1294,L1297
이부분도 추가로 적용해주니 일반회원도 잘 되네요.
Context.class.php 파일에
if($val['name'][$i] === '' && $val['size'][$i] == 0)
{
continue;
}
이걸 적용했는데 file is not exist 에러 때문에 업로드 안됩니다 ㅠ_ㅠ
php7.3에서는 안되는건가요?
코어에서 반영되어야 하는 부분으로 php 버전과는 무관할 것 같구요.
최고관리자부분, 일반계정 부분 2부분을 수정해줘야 합니다.
물론 저도 스티커 모듈 개발자님이 위에 답변 주신 내용대로 한 것입니다.
스티커 모듈 설치중입니다. 게시판 보드는 스케치북에서 paper board로 교체 했는데요
이 보드가 스티커 모듈을 지원한다고 해서 해보려는데 저기 위에
이미지 파일을 업로드 하면
file_is_not_enough 이런 메세지가 뜨네요.
저는 라이믹스인데 왜 이런 메세지가 뜰가요.
글쎄요. 저도 모르는 내용이라서요. 스킨과 관계없는 내용입니다.
스티커 모듈이 되긴하네요. 그런데 저기 맨앞에 깨지는 파일이 뭔지 잘 모르겠습니다. 스티커 구매전부터 있는거보니
뭔가 디폴트 파일 같은건지 잘모르겠는데 혹시 전에 사용하실때 어떤 이미지였는지 기억나실까요?
"저희는 스티커 리스트 로드하는 부분(loadSticker)에서 if문으로 값이 없는 스티커를 로드하지 않도록 감쌌습니다."
라고 되어 있는데 리스트를 로드하는 부분이라는게 sticker.js 와 sticker_mob.js 파일에 해당 부분을 if문으로 감싸라는것 아닌가요? 스티커컨트럴러 php과 위 두 js 파일 코드 수정 했는데 엑박 현상은 그대로네요.
스킨 판매자분께 문의해보세요. js 는 스킨과 연관이 있습니다.
https://xetown.com/questions/1493840#comment_1494224
위 댓글 처럼 js 파일에서 해당부분을 수정하라는 것입니다.