Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

외부이미지 섬네일생성시 가로 1280px 넘어갈경우 생성되지않음 #790

Closed
mAKEkr opened this issue Jun 15, 2014 · 29 comments

Comments

@mAKEkr
Copy link
Contributor

mAKEkr commented Jun 15, 2014

총 3종의 샘플로 테스트 해보았습니다.

http://24.media.tumblr.com/a6e26451c90c25b6fae222c5c0a032d9/tumblr_n76t0oir8H1r5ml59o1_r1_1280.jpg (가로 1280이상)
http://i1.ytimg.com/vi/Gn7jGyb9PIg/maxresdefault.jpg (가로 1280미만)
http://cfile30.uf.tistory.com/image/25487C34529B3750302D77 (외부링크 차단시)

총 3개의 파일로 시험해보았으나 외부링크 차단시에는 섬네일 자체가 생성되지 않는것에 비해, 외부링크가 허용된 위의 두 이미지들에 대해서는 가로 1280px이 넘어갈경우 섬네일이 제대로 생성되지 않는걸 확인했습니다.(1920x720 ratio 기준으로 생성, 240x180 crop 기준으로 생성 총 2개 시험해보았습니다)

[XE Server Environment 2014-06-15]

location : ko
package : XE
host : http://ake.kr/
app : Apache
xe_version : 1.7.5.1
php : 5.2.17
db_type : mysqli
use_rewrite : Y
use_db_session : N
use_ssl : none
phpext : libxml, fileinfo, bcmath, bz2, curl, dba, simplexml, gettext, gmp, iconv, mbstring, mcrypt, mysql, mysqli, odbc, openssl, pdo_sqlite, pdo_mysql, exif, snmp, sockets, sqlite, xml, xmlreader, xmlwriter, zip, zlib, gd, pdf, soap, eaccelerator, zend optimizer
module : adminlogging(1.7), board(1.7.2), imageprocess(1.3.0.3), krzip(1.0), seo(0.1), syndication(3.1.0-beta.2)
addon : adminlogging(1.7), ajaxboard(1.5.6), captcha_member(1.7), fa_loader(1.0), jqueryuicdn(1.0), multimedia_thumbnail(1.0), oembed(1.0)
layout : makekr(), xe_official(1.7), user_layout(1.7)
widget : counter_status(1.7)
widgetstyle : simple(1.7)
max_file_uploads : 20
post_max_size : 50M
memory_limit : 128M

@bjrambo
Copy link
Contributor

bjrambo commented Jun 15, 2014

@akasima 비슷한 이슈여서 여기 남겨드립니다.

외부 링크를 섬네일 할때 다음과 같은 내용을 지우게 되면 외부링크가 섬네일이 잘생성되는 것을 확인했었습니다.

modules\document\document.item.php
파일에서

843 list($_w, $_h, $_t, $_a) = @getimagesize($tmp_file);
844 if($_w<$width || $_h<$height) continue;

해당 두라인의 소스를 // 주석 처리를 하엿을때 정상적인 구동이 나타나는 것을 확인했습니다.
/당연히 티스토리 경우엔 끝부분에 .jpg .png 의 등등의 파일 확장자가 존재하지 않아 문제가 되었지만요./

한번 참고해서 이슈를 확인해주시기 바랍니다.

@mAKEkr
Copy link
Contributor Author

mAKEkr commented Jun 15, 2014

@qw5414 해당부분 소스 지워주니 잘되네요. 왜 이런 소스가 들어가있는지 모르겠는데.. 굳이 유지되어야되는 소스라면, 설정에 추가되어야되지 않을까 싶습니다.

@bjrambo
Copy link
Contributor

bjrambo commented Jun 15, 2014

@mAKEkr 저도 자세하게는 원인은 모릅니다.
전체적인 소스를 분석하거나 뭔지를 많이 안파고 들었기 때문입니다.

일딴 정보를 알고 잇어서 확인을 요청 드리기 위해 댓글을 남겼었지요 ㅎㅎ

@akasima akasima added this to the 1.7.6 milestone Jun 16, 2014
@akasima
Copy link
Member

akasima commented Jun 17, 2014

 779         if(!$this->get('uploaded_count') && !preg_match("!<img!is", $this->get('content'))) return;

documentItem::getThumbnail() 을 하면서 글 내용을 참고 해서 업로드된 파일이 있거나 img 태그가 들어 있으면 썸네일을 가져 오도록 하고 있는데요...

url 로 이미지를 추가 할 경우 리스트에서 썸네일이 뿌려지지 않는 문제가 있습니다.
보고 있는 글에 대해서는 리스트에서 썸네일이 생성 되지만.. url 로 이미지를 추가한 다른 리스트는 썸네일이 표시가 안되는 문제..

@akasima
Copy link
Member

akasima commented Jun 17, 2014

@mAKEkr @qw5414
getimagesize() 를 처리하면서 오류가 발생해서 생가는 문제로 보입니다.
제 테스트 환경에서는
http://24.media.tumblr.com/a6e26451c90c25b6fae222c5c0a032d9/tumblr_n76t0oir8H1r5ml59o1_r1_1280.jpg (가로 1280이상)
http://i1.ytimg.com/vi/Gn7jGyb9PIg/maxresdefault.jpg (가로 1280미만)

모두 썸네일이 생성 되었습니다.

getimagesize() 앞에 '@' 를 제거하고
getimagesize() 에서 어떤 오류가 발생하는지 report 주시면 문제 해결에 도움이 될것 같습니다.

@bjrambo
Copy link
Contributor

bjrambo commented Jun 22, 2014

@akasima 안녕하세요
getimagesize 해당 소스를
list($_w, $_h, $_t, $_a) = getimagesize($tmp_file);
이렇게 넣어서 ( @ 만 삭재함 ) 글을 올렸더니 외부링크의 섬네일을 생성하지 못했습니다.
http://i.imgur.com/O9uk30U.jpg
해당 이미지의 주소이며, 섬네일의 설정은 다음과 같습니다.

(섬네일 가로크기 215 세로크기 1900 ratio )
이렇게 설정한 이유는 어차피 섬네일 가로크기가 215일경우 세로크기는 자동적으로 비율이 맞춰지고,
https://sosifam.com/Data 이러한 형태의 게시판에 사용이 필요로 하여 설정한 상태입니다.

한번 확인해주시기 바랍니다.

@bjrambo
Copy link
Contributor

bjrambo commented Jun 22, 2014

@akasima 그상태에서 다시 위의 두줄의 소스를 다시 지우고

(841번째줄)
else
{

        $source_file = $tmp_file;
        $is_tmp_file = true;
        break;
}

으로 다시 만들어서 테스트 해보니, 다시 섬네일이 생성되는 군요.

@wlcjack
Copy link

wlcjack commented Jun 29, 2014

위에 언급된 두줄을 지워도 생성이 안되네요.. 흠... 직접 파일을 추가하면 아무문제 없이 되는데 말이죠. 일단 개인적으로 몇번 더 시도해보겠습니다..

@bjrambo
Copy link
Contributor

bjrambo commented Jun 29, 2014

@wlcjack 글이 올라가잇는 글의 대해서는 반응을 하지 않습니다.

코드삭제 이후 해당글을 수정, or 재등록 과정을 거치셔야 합니다.

@wlcjack
Copy link

wlcjack commented Jun 29, 2014

재등록도 해보고 수정도 해봤으나 같은 결과네요... 흐음... 파일을 직접 추가하면 썸네일이 아무 이상없이 출력되는걸 봐, 서버상에 문제일확률은 낮은거같은데.. 일단 감사합니다

@bjrambo
Copy link
Contributor

bjrambo commented Jun 29, 2014

@wlcjack 제가 사용하는 php5.4 버전의 서버와 php5.3 버전의 서버에서는 두곳 전부해당 코드가 지워졌을 경우 정상적으로 동작하는 것으로 보여졌습니다.

임시적인 해결방편으로 해당 코드를 지우고 사용하는 것이였지요.

만일 동일하게 그러지 않앗다면, 티스토리의 이미지 주소였을 가능성인데.. 티스토리 같은경우 .jpg와 같은 확장자명이 없는 외부 링크이므로 섬네일이 생성되지 않을 가능성이 큽니다.

@wlcjack
Copy link

wlcjack commented Jun 29, 2014

위에 사용된 imgur 이미지들을 사용해보고 그외 구글에 검색해서 아무 이미지로 실험을 해봤습니다. 호스팅케이알에서 웹호스팅을 받아서 사용하고 있는데 PHP 버전이 5.2.17인데... 이게 문제가 될수도 있을까요? 이제 새벽인데 신속한 답변 정말감사드립니다

@wlcjack
Copy link

wlcjack commented Jun 29, 2014

지금 확인해보니 FTP상으로 외부이미지 기준으로, 썸네일 폴더와 파일은 생성이 되나 빈 껍데기 파일(0KB)들이 만들어지네요.

@bjrambo
Copy link
Contributor

bjrambo commented Jun 29, 2014

ftp의 권한 혹은 제공된 용량을 검토 해보시는 것이 좋을 것 같습니다.

@wlcjack
Copy link

wlcjack commented Jun 29, 2014

용량은 남아돌고 퍼미션을 제가 지금 의심해보고 있는데.. 썸네일 폴더들의 권한이 755을 기본으로 생성되는데 이것이 정상인가요?

@bjrambo
Copy link
Contributor

bjrambo commented Jun 29, 2014

@wlcjack 권한상 문제는 없어보입니다..

문제는 다른 부분의 문제점이라는 것 같은데.. 정확히 파악이 힘들긴하네요.

@wlcjack
Copy link

wlcjack commented Jun 29, 2014

아마 호스트사와 관련된 문제일 수도 있을거같네요. 날이 늦어 제정신이 아닌지라 내일 다시 한번 잡고 이것저것 시도해봐야겠습니다. 잘 주무시고 답변 정말 감사드립니다. 혼자 끙끙앓고 있었는데 이제 대충 뭘 해봐야할지 감이라도 잡히네요 ㅠㅠ

@wlcjack
Copy link

wlcjack commented Jun 30, 2014

호스팅케이알에서 카페24로 호스트를 옮기니 바로 해결됩니다. 아마 PHP나 다른 서버 세팅에서 문제가 생긴것같습니다.

@smaker
Copy link
Contributor

smaker commented Aug 16, 2014

호스팅을 옮겨서 해결된 것으로 보아, 서버에서 특정 포트로 나가는 접속을 차단했을 가능성이 있겠군요.

@bjrambo
Copy link
Contributor

bjrambo commented Aug 16, 2014

@akasima 님 대충 짐작으로 원인을 찾아본 바로는
getimagesize의 작동여부는 정상적으로 이루어지고 있었습니다.

그래서
list($_w, $_h, $_t, $_a) = @getimagesize($tmp_file);
이소스보단,
if($_w<$width || $_h<$height) continue;
이소스가 문제였습니다.

가로값 새로값의 차이를 정상적으로 구동 못하는것 같습니다.
한번 확인 해주세요.

@akasima
Copy link
Member

akasima commented Aug 21, 2014

@qw5414 이 오류가 발생하는 서버의 php 버전이 몇인가요?

$_w, $_h 를 가져오지 못해서 발생했던 문제로 보여서요.

@bjrambo
Copy link
Contributor

bjrambo commented Aug 21, 2014

@akasima php5.4.29~30
php5.3.19p1 ??? 대충 이런..

5.3은 cafe24호스팅 대표적으로 사용되던 곳이고,

제 개인서버 sosifam.com 사이트를 비롯, 호스팅업체에서 사용되는 php5.4.29~30 전부 이런문제가 발생되었습니다.

@bimileya
Copy link

저는 PHP Version 5.3.24 인데요 외부이미지 (특히 구글드라이브 사진)을 끌어와서 게시판에 img src=로 넣으면 섬네일이 안만들어지네요. 다른 일반 사이트에 있는 사진을 img src=로 넣으면 문제 없이 바로 섬네일이 생선됩니다. 무엇이 문제일까요? 구글드라이의 경우 링크가 좀 긴데 그것때문에 그런 것일까요? 그렇다면 어떻게 document.item.php를 수정하여 올바르게 섬네일이 생선될 수 있도록 할 수 있을까요? 아래는 샘플 이미지 입니다.

  1. 섬네일 생선되는 외부링크:
    http://media-cache-ec0.pinimg.com/736x/28/55/78/2855784103719aa6caf5715c02b3a18b.jpg
  2. 섬네일 생선"안되"는 외부링크:
    https://lh4.googleusercontent.com/-R3uy-XO1LEo/UhKtcN3-bbI/AAAAAAAAAvw/gIUAwNLfFQw/w783-h585-no/IMG_2323.JPG

@bjrambo
Copy link
Contributor

bjrambo commented Sep 17, 2014

@bimileya

843 list($_w, $_h, $_t, $_a) = @getimagesize($tmp_file);
844 if($_w<$width || $_h<$height) continue;

위두줄을

843 list($_w, $_h, $_t, $_a) = getimagesize($tmp_file);
844 

으로 바꾸세요.
/844번째 라인은 코드 삭제.

@bimileya
Copy link

@qw5414 답변감사합니다. 그런데 제 경우에는 말씀하신대로 843에 @를 삭제하고 844에 코드를 삭제해도 안돼네요 ㅠㅠ 저장 후 업로드하였고요 다시 게시글을 올렸는데요 안되네요. 위에 언급한 것과 같이 이상하게도 구글드라이브에 있는 이미지 파일은 섬네일이 안생기는 반면 다른 이미지는 외부 이미지라도 섬네일이 생깁니다 ㅠ 구글드라이브에 위치한 이미지의 경우 https 라서 그게 무슨 작용을 하는 것인지는 모르겠어요 혹시 님 서버 환경에서는 제가 위에 언급한 두 이미지 모두 섬네일이 잘 나오나요?

@bjrambo
Copy link
Contributor

bjrambo commented Sep 18, 2014

@bimileya https:// 부분때문인것 같기도합니다.

기본적으로 섬네일이미지를 http 으로 읽고 그걸 가져오는 방식이기도 할테니깐요..

@bimileya
Copy link

@qw5414 아 해결했어요 ㅋㅋ 생각보다 아주 간단한 문제였군요. 역시 https:// 때문이 였던 것 같습니다. 구글에 이미지를 업로드 한 후에 이미지 링크를 카피하면 무족건 https://가 붙어서 그 것을 가지고 게시글에 올렸던게 문제였더군요. https://라 할지라도 s를 빼고 http://로 바꾸니 섬네일이 올바르게 잘 나옵니다. 감사합니다.

@bjrambo
Copy link
Contributor

bjrambo commented Sep 18, 2014

@bnu 섬네일 생성전, 조사시 https:// 와같은 보안 접속에도 섬네일이 생성 될 수 있도록 해주시면 좋을 것 같습니다.

그리고 개인적인 생각으로는..
if($_w<$width || $_h<$height) continue;
이코드가 필요가 있을까 싶기도 하네요 :)

@bjrambo
Copy link
Contributor

bjrambo commented Apr 3, 2015

if($_w<$width && $_h<$height) continue;

@ghost ghost modified the milestones: 1.8.2, 1.8.1 Apr 14, 2015
@ghost ghost modified the milestones: next-2015-19, next-2015-24 May 4, 2015
@ghost ghost modified the milestones: next-2015-28, next-2015-24 Jun 5, 2015
@ghost ghost closed this as completed Jul 6, 2015
@ghost ghost removed this from the 1.8.4 milestone Jul 7, 2015
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants