외부에서 퍼온 이미지 getimagesize($path);에러 처리할 방법? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

외부에서 퍼온 이미지 getimagesize($path);에러 처리할 방법? 정보

외부에서 퍼온 이미지 getimagesize($path);에러 처리할 방법?

본문

에러메시지------------------------------------------------------------------

Warning: getimagesize() [function.getimagesize]: URL file-access is disabled in the server configuration in /home2/.../view.skin.php on line 87

Warning: getimagesize(http://www......./data/file/board_04/596207363_15e6a3f3_10-4.jpg) [function.getimagesize]: failed to open stream: no suitable wrapper could be found in /home2/.../view.skin.php on line 87


소스 ----------------------------------------------------------------------------

// 웹에디터 이미지 클릭시 원본 사이즈 조정

$data = $view[rich_content];

preg_match_all("/<IMG name='target_resize_image\[\]' onclick='image_window\(this\)'.*src=\"(.*)\"/iU", $data, $matchs);

for ($i=0; $i<count($matchs[1]); $i++) {

$match = $matchs[1][$i];

$path = str_replace($g4[url], "..", $match);

$size = getimagesize($path);


if ($size[0] && $size[1]) {

$match = str_replace("/", "\/", $match);

$match = str_replace(".", "\.", $match);

$pattern = "/(onclick=[\'\"]{0,1}image_window\(this\)[\'\"]{0,1}) (.*)(src=\"$match\")/iU";

$replacement = "onclick='mw_image_window(this, $size[0], $size[1])' $2$3";

$data = preg_replace($pattern, $replacement, $data);

}

}

$view[rich_content] = $data;



------------------------------------------------------------------------

getimagesize 의 에러 메시지가 계속 뜨네요.
외부 경로에서 불러오는 이미지사이즈를 확인할 수 없는 서버세팅때문인게 같은데요..

만약 자기서버에서 불러온 이미지가 아니라면 이미지원본보기팝업을 띄우지 않게
하면 될 거 같은데.. 어떻하면 될지 잘 모르겠네요...

혹시 도움받을 글이나 방법이 있으면 좀 알려주세요.
  • 복사

댓글 전체

if(strpos("대상파일", $_SERVER[HTTP_HOST])===FALSE) { // 외부경로인 경우
    $file_path = $g4[path]. "/file/707권한준폴더"; // 파일을 복사해올 경로
    copy("대상파일", "$file_path/파일이름"); // 파일을 폴더로 복사해온다
}
이런 식으로 처리해주고 복사해온 파일을 가지고 작업을 진행하도록 하면 안될까요?
저도 짜집기 하는 수준이라 이 이상으로 설명하지 못하겠네요. ㅜㅜ
질문받은 내용을 기록해둡니다.

원본 내용
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

preg_match_all("/<IMG  name='target_resize_image\[\]' onclick='image_window\(this\)'.*src=\"(.*)\"/iU", $data, $matchs);
for ($i=0; $i<count($matchs[1]); $i++) {
    $match = $matchs[1][$i];
    $path = str_replace($g4[url], "..", $match);
    $size = getimagesize($path);
    if ($size[0] && $size[1]) {
        $match = str_replace("/", "\/", $match);
        $match = str_replace(".", "\.", $match);
        $pattern = "/(onclick=[\'\"]{0,1}image_window\(this\)[\'\"]{0,1}) (.*)(src=\"$match\")/iU";
        $replacement = "onclick='mw_image_window(this, $size[0], $size[1])' $2$3";
        $data = preg_replace($pattern, $replacement, $data);
    }
}



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
바꾼 뒤의 내용

preg_match_all("/<IMG  name='target_resize_image\[\]' onclick='image_window\(this\)'.*src=\"(.*)\"/iU", $data, $matchs);
for ($i=0; $i<count($matchs[1]); $i++) {
    $match = $matchs[1][$i];
    $path = str_replace($g4[url], "..", $match);
if($path==$match) { // 외부파일일 때
$temporary_path = "$g4[path]/data/temporary";
$temporary_file = $temporary_path . "temporary_file.tmp";
@mkdir($temporary_path, 0707); // 임시 폴더 없으면 만들기, 있어도 @때문에 에러 표시 안됨
@chmod($temporary_path, 0707); // 권한 707로 설정
copy($match, $temporary_file); // 외부 파일을 임시파일로 복사하기
$size = getimagesize($temporary_file); // 임시파일은 내부 파일이니까 정보를 가져올 수 있을듯
unlink($temporary_file); // 임시 사용을 끝내고 삭제하기
}
else // 외부파일이 아닐 때
$size = getimagesize($path);
    if ($size[0] && $size[1]) {
        $match = str_replace("/", "\/", $match);
        $match = str_replace(".", "\.", $match);
        $pattern = "/(onclick=[\'\"]{0,1}image_window\(this\)[\'\"]{0,1}) (.*)(src=\"$match\")/iU";
        $replacement = "onclick='mw_image_window(this, $size[0], $size[1])' $2$3";
        $data = preg_replace($pattern, $replacement, $data);
    }
}


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

생각해보니 copy도 서버 설정에서 막혀있다면 작동 안하겠군요..
© SIRSOFT
현재 페이지 제일 처음으로