[PHP] 내가 처음 만든 HTTP 웹서비스 함수 ... 함수 코드와 호출하는 코드 포함

2025. 1. 16. 16:35HTML 공부

처음 만든 웹서비스를 공개한다.

<?php
$conn = new mysqli(localhost,'','',''); 
$conn->set_charset("utf8");  

if ($conn->connect_error) {     
    die("Connection failed: " . $conn->connect_error); 
}

$a_value = $_GET['a'];
$sql = "SELECT domain FROM b WHERE s='$a_value'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    echo $row['domain'];
} else {
    echo "No result";
}

$conn->close();
?>

브라우저에서 호출해 보니 성공이다.

wizneth.cafe24.com/n10/?a=a2

 

이번엔 클라이언트 프로그램을 작성해서 호출해 보았다.

<?php
$a_value = "a2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://wizneth.cafe24.com/n10/?a=" . $a_value);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
echo "Result: " . $response;
?>

 

결과가 잘 나온다.

 

이런 식으로 나의 DB 나 여러가지 내용을 웹서비스로 오픈할 수 있다. 

자기가 만든 시스템의 내용을 외부로 서비스 할 수 있다.

이러면, 필요하면 유료로 이용하게끔 할 수도 있다. 

여러가지 biiling 모델을 만들 수 있다. 

다른 회사의 Open API 정책을 흉내내서 만들면 된다. 

한달에 1000원이라던지, 한번 호출하면 10원이라던지...

계정당 10번까지는 무료라던지...

모두 프로그램 하기에 달렸다.

 

아래 코드를 사용해도 된다고 합니다.

<?php
// PHP에 openssl 확장이 설치되어 있는지 확인
if (!extension_loaded('openssl')) {
    die('OpenSSL 확장이 필요합니다');
}

$a_value = "a2";
$opts = array(
    'http'=>array(
        'header'=>"User-Agent: Mozilla/5.0"
    ),
    'ssl'=>array(
        'verify_peer'=>false,
        'verify_peer_name'=>false,
    )
);
$context = stream_context_create($opts);
$response = file_get_contents("https://wizneth.cafe24.com/n10/?a=" . $a_value, false, $context);
echo "Result: " . $response;
?>

HTTPS 라서 아래와 같이 프로그램해서  호출하면 에러가 난다고 합니다. 


<?php
$a_value = "a2"; // 조회하려는 A 컬럼의 값
$response = file_get_contents("https://wizneth.cafe24.com/n10/?a=" . $a_value);
if ($response === FALSE) {
    echo "Error: " . error_get_last()['message'];
} else {
    echo "Result: " . $response;
}

?>

에러가 나는 이유는 아래와 같습니다 .

Error: file_get_contents(https://wizneth.cafe24.com/n10/?a=a2): failed to open stream: no suitable wrapper could be found

file_get_contents() 함수가 HTTPS URL에 접근할 때 발생한 에러의 원인을 설명하면

PHP 내부적인 이유

  • file_get_contents()는 URL을 열 때 'wrapper'라는 특별한 핸들러가 필요
  • HTTPS 프로토콜을 처리하기 위해서는 OpenSSL wrapper가 필요
  • OpenSSL이 설치되지 않았거나 활성화되지 않으면 "no suitable wrapper" 에러 발생

보안 관련 이유

  • HTTPS는 SSL/TLS 인증서 검증이 필요
  • 기본 PHP 설정에서는 보안상의 이유로 이러한 접근이 제한될 수 있음

cURL이 되는 이유

  • cURL은 자체적인 SSL/TLS 처리 기능 포함
  • 더 유연한 네트워크 프로토콜 지원
  • 보안 인증서 검증 옵션을 쉽게 제어 가능

이런 이유로 웹 요청 시에는 일반적으로 file_get_contents() 보다 cURL 사용을 권장합니다.