• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

cURL 학습중 테스트 방식에 대한 질문입니다.

20.09.17 01:08 작성 조회수 274

0

안녕하세요. cURL 강의 중 테스트 코드를 작성하여

' php -S localhost:8000 -t [DocumentRoot 경로 설정] ' 명령어를 통해 내장 웹서버를 띄운 뒤 

cURL GET, POST 요청에 대한 테스트를 진행하고자 하는데

몇가지 문제 점이 발견되에 해결방법을 얻고자 글을 남깁니다.

[내장 웹서버 띄우는 명령어]

1. curl_setopt() 함수를 통해 CURLOPT_URL를 설정할 때 'http://localhost:8000'로 하면 연결이 되지 않고, 'http://127.0.01:8000'로 설정했을 때만 연결이 되는 이유가 궁금합니다.(GET, POST 동일한 현상)

[Chrome Console Network tab]

[httpClient.php 소스 - 127.0.0.1로 설정한 경우]

[httpClient.php 소스 - localhost로 설정한 경우]

2. 강의 내용중 vscode 'DEBUG CONSOLE'에  cURL 실행에 대한 결과 값이 출력되는 것을 확인할 수 있었습니다.

XDebug와 같은 확장 모듈이 설치되지 않은 상황에서 DEBUG CONSOLE이 아닌, WEB 상에서의 결과 값을 출력해 볼 수 있는 방법이 있는지 궁금합니다.

[index.php 소스코드(Server 용도로 사용)]

* 개발환경

O/S : MacOS Catailna

IDE : vscode 

PHP: PHP 7.4

답변 1

답변을 작성해보세요.

1

안녕하세요 . 답변이 늦어 죄송합니다.

1. 이 문제같은 경우는 각 OS 마다 설정이 다르기 때문에 저도 명확한 답변을 드리기는 어려울 수도 있습니다. 일반적으로 localhost 는 127.0.0.1 아이피인 자기 자신을 가르키게되는데, localhost 를 했을 때 DNS 서버로 가기 전에 운영체제가 이를 127.0.0.1 로 바꿔주지 않는다면 요청이 올바르게 진행되지 않을수도 있습니다.

2. curl_exec() 함수의 기본 동작은 출력의 대상이 Ouput Stream 인 것으로 파악되며, 이를 문자열 형태로 별도로 반환 받으려면 옵션을 추가해야합니다. 다음과 같은 코드를 옵션에 추가해보시기 바랍니다. 

// RETURN WITH STRING
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);