외부이미지 저장할때 문의 드립니다.
본문
안녕하세요
외부이미지 저장할때 아래 내용을 적용하는되요
$ch = curl_init ('이미지URL');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$err = curl_error($ch);
if(!$err) $rawdata=curl_exec($ch);
curl_close ($ch);
여기서
if ($rawdata) {
여기서 저장 프로세스 진행 하는되요
}
$rawdata 통과는 안되는데
url로는 이동하면 이미지가 보입니다.
안되는 이유가 뭔가요?
고수님들 조언부탁드립니다.
답변 5
SSL 사이트에 이미지를 가져올때는
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
추가해서 데이터를 가져오는지를 체크해보시면 됩니다.
가져오는 곳에서 차단하는 경우가 있습니다.
혹은 SSL 인증에서 막히는 경우는 있고요.
주소에 딸린 이미지는 ssl 설정 curl 항목 검색하셔서 불러오면될것이구요
제대로 읽어오는것만 확인먼저해도됩니다.
CURLOPT_BINARYTRANSFER 옵션은 CURLOPT_RETURNTRANSFER 옵션의 기본 출력을 반환하는 구문입니다.
아래와 같이 SSL 관련 설정도 진행해주신 뒤 위 옵션을 삭제해보세요.
$ch = curl_init ('이미지URL');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$err = curl_error($ch);
if(!$err) $rawdata=curl_exec($ch);
curl_close ($ch);
위 답변 모두 감사합니다. ^^~
아래 내용도 정확히 이해는 되지는 않지만
아래 처럼 처리 하니 잘받아지네요^^~
curl 로 안되더라구요.
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$rawdata= file_get_contents($img_link, false, stream_context_create($arrContextOptions));
ps. 위 답변 중 @팬덤디자인 님 답변도 가능할 듯하네요
$ch = curl_init ('이미지URL');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); --> 이부분
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); --> 이부분
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$err = curl_error($ch);
if(!$err) $rawdata=curl_exec($ch);
curl_close ($ch);