api ? curl 사용 질문 입니다.
본문
타사이트에서 정보를 입력 받아 쿼리 처리 하고 결과 상태를 리턴해주려고 합니다.
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 에서 무슨 문제가 되는거 같은데 어떠한 문제 인지 도무지 알수가 없습니다. ㅠㅠ