테스트 사이트 - 개발 중인 베타 버전입니다

api ? curl 사용 질문 입니다. 채택완료

아수라발바리 5년 전 조회 2,503

타사이트에서 정보를 입력 받아 쿼리 처리 하고 결과 상태를 리턴해주려고 합니다.

rest api 를 알지 못하는 상태이다 보니, curl을 이용하여 입력을 받으면 되겠다 싶었습니다.

 

서버단 요청 받는 테스트 소스 입니다.

 

api_test.php

<?php
include_once('./_common.php');

header('Content-Type : application/json; charset=utf-8');


$id = $_GET['id'];      
$pw = $_GET['apiKey']; 

 

$user_chk_sql = " select * from g5_api where api_id = '{$id}' and api_key = '{$pw}' ";
$user_chk_rlt = sql_fetch($user_chk_sql);

 

$result_json = array();

//유저확인
if( $user_chk_rlt ) {

    $tempArr['code'] = "0"; //전체실패
    $tempArr['code_desc'] = "0"; //회원정보오류
    array_push($result_json, $tempArr);
    
    echo json_encode($result_json, JSON_UNESCAPED_UNICODE);
    
}else{
    //echo "미확인";
    $usr_chk = false;
    $tempArr['code'] = "1"; //전체실패
    $tempArr['code_desc'] = "4"; //회원정보오류
    array_push($result_json, $tempArr);
    echo json_encode($result_json, JSON_UNESCAPED_UNICODE);
}
?>

 

요청하는 클라이언트 소스 입니다.

 

<?php
include_once('./_common.php');

Header("Content-type: text/html; charset=utf-8");

 

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://test-ts.com/api/test/api_test.php?id=test&apiKey=jTyIFEz2jorscsjPrC99i3Gx1p7hB1wS");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

$someArray = json_decode($response, true);

echo $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);


var_dump($response);        //결과 값 출력
var_dump($someArray);
?>

 

제 로컬 PC 테스트에서는 문제 없이 작동 합니다. (서버 소스 , 클라이언트 소스 모두 제 localhost)

 

그런데 서버에 올려서 호출을 하면 (서버소스 서버, 클라이너트 소스 제 localhot)

Warning: curl_getinfo() expects parameter 1 to be resource, null given in ....

Warning: curl_error(): 45 is not a valid cURL handle resource in .....

string(2248) "" NULL

 

 

이렇게 에러 메세지를 뱉어냅니다.

 

구글링 해봐도 curl_error():45 는 딱히 찾기가 힘드네요.

 

선배님들 도움 부탁드립니다.  혹시 서버업체 에서 curl 로 서버에 접근하는것을 차단 하기도 하나요?

아니면 아파치 단에서 먼가 설정이 필요할까요?

 

저희 서버에서 curl 로 외부 접근은 잘됩니다. 서버에 curl 도 설치 되어 있구요.

 

참고로 아파치 2.4 php 5.6 mysq5.7 centos7 그누보드 5.1.1 사용 중입니다.

 

- 추가

호출하는 소스의

 curl_setopt($ch, CURLOPT_URL, "http://test-ts.com/api/test/api_test.php?id=test&apiKey=jTyIFEz2jorscsjPrC99i3Gx1p7hB1wS"); 

에서 url 라인을 직접 화면에 띄우면 문제 없이 결과 값이 나옵니다.

 

아무래도 curl 에서 무슨 문제가 되는거 같은데 어떠한 문제 인지 도무지 알수가 없습니다. ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
5년 전

Warning: curl_getinfo() expects parameter 1 to be resource, null given in ....<--- 이유가 여기잇네요

 

echo $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); <-----아래처럼 고치세요

print_r($status);

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

아수라발바리
5년 전
말씀해주신대로 수정하였습니다.


404
Warning: curl_error(): 45 is not a valid cURL handle resource in ....

이렇게 뜨네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인