본문 바로가기
📂 언어/◾ PHP

[PHP] CURL로 API 호출할 때 디버깅 하는 방법

by 이 정규 2023. 11. 24.
728x90
반응형

PHP를 쓰다보니 Python처럼 셀 단위로 프롬프트 출력이 가능하다면 얼마나 좋을까 하는 생각을 많이 했습니다. 원래 Python 밖에 못하는 그지 깽깽이였던 시절에 특히 심했습니다. 지금도 깽깽이 정도 면한 신세다만, 어쨋든 PHP는 디버깅 자체가 앞단에 붙어서 테스트 해야해서 골치가 아팠습니다. 

그래도 뭐 함수 print_object로 거의 다 확인이 가능했습니다만 CURL로 API를 호출하는 코드를 짜고나서 이 녀석이 잘 갔나를 볼 수가 없더랍니다. 그래서 변수로 빼내서도 해보고 온갖 삽질을 하던 중 ... PHP CURL에서도 딥러닝 학습할 때처럼 Verbose 옵션을 줄 수 있다는 사실을 알게됐습니다. 

$c = curl_init('https://www.google.com');
 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
 
// -v
curl_setopt($c, CURLOPT_VERBOSE, true);
// Outputs to STDERR when setting CURLOPT_VERBOSE but temporarily switches to a stream generated
$verboseStream = fopen('php://memory', 'w+');
curl_setopt($c, CURLOPT_STDERR, $verboseStream);
 
curl_exec($c);
 
// print
rewind($verboseStream);
echo stream_get_contents($verboseStream);
 
fclose($verboseStream);
curl_close($c);

코드를 실행해보시면 아래와 같은 결과가 나옵니다.

* 로 시작하는 건 CURL에서 제공되는 추가 정보
> 로 시작하는 건 Request Header
< 로 시작하는 건 Response Header 입니다.

* About to connect() to www.google.com port 443 (#0)
*   Trying 216.58.220.100... * connected
* Connected to www.google.com (216.58.220.100) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*       subject: CN=www.google.com,O=Google LLC,L=Mountain View,ST=California,C=US
*       start date: Jul 15 08:34:33 2020 GMT
*       expire date: Oct 07 08:34:33 2020 GMT
*       common name: www.google.com
*       issuer: CN=GTS CA 1O1,O=Google Trust Services,C=US
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
 
< HTTP/1.1 200 OK
< Date: Tue, 11 Aug 2020 03:40:36 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
< Server: gws
< X-XSS-Protection: 0
< X-Frame-Options: SAMEORIGIN
< Set-Cookie: 1P_JAR=2020-08-11-03; expires=Thu, 10-Sep-2020 03:40:36 GMT; path=/; domain=.google.com; Secure
< Set-Cookie: NID=204=ZnZJMun67olpxRGoZVvFJrOo9x794GjSc0_wFKv3r7EGMF2H0iUMDpd5PVYnBaQYj1rsJglgBTqJpyMhrkXycQQGOpMs5UJIvjXxTat1wXFjDM9nIAZknit1lS8NO37dPUe9e366CSaK4o1X74YmO-Zdwa-xZHxp_cTydHQSGvE; expires=Wed, 10-Feb-2021 03:40:36 GMT; path=/; domain=.google.com; HttpOnly
< Alt-Svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
< Accept-Ranges: none
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
<
* Connection #0 to host www.google.com left intact

그럼 이만 총총 ,..

728x90
반응형

댓글