본문으로 바로가기
728x90
반응형

안녕하세요. 오늘은 curl 라이브러리에서 curl_easy_setopt() 함수의 옵션에 대해서 정리하고자합니다.


그 중에서 옵션값을 TRUE/FALSE 로 할 수 있는 것들만 모아봤습니다.


 

 

 



CURLOPT_AUTOREFERER

TRUE로 설정하면 리퀘스트 후 Location: 헤더를 받아 다른 URL에 요청할 때 이전 URL을 Referer: 헤더에 추가해준다.


CURLOPT_BINARYTRANSFER

TRUE로 설정하면 CURLOPT_RETURNTRANSFER 옵션을 사용했을 때 서버의 전송 결과가 NULL로 끝나는 문자열이 아닌 바이너리 데이터로 취급된다.


원래는 위와 같은 역할을 하는 옵션이나 최근에는 항상 binary-safe한 결과를 돌려주므로 사용할 필요가 없다. 최근의 PHP trunk 소스를 살펴보면 하위 호환성 유지를 위해 남아있으며 실제로 아무 일도 하지 않는다.


CURLOPT_COOKIESESSION

TRUE로 설정하면 새로운 세션으로서 쿠키를 다룬다. 기본적으로 libcurl은 서버가 내려준 쿠키가 세션 쿠키든 일반 쿠키든 상관하지 않고 모두 동등하게 취급한다. 세션 쿠키란 만료 시간을 지정하지 않아 브라우저를 닫을 때 사라지는 쿠키를 말한다.


즉, CURLOPT_COOKIEJAR 옵션을 사용해 파일에 쿠키를 저장하고 CURLOPT_COOKIEFILE 옵션으로 이 쿠키를 불러다 사용할 때 CURLOPT_COOKIESESSION 옵션을 주면 만료 시간이 없는 쿠키는 불러오지 않는다. 마치 브라우저를 닫았다 새로 연 것 처럼 세션쿠키를 무시할 수 있다.


CURLOPT_CERTINFO

TRUE로 설정하면 SSL 인증서와 관련된 정보를 STDERR로 표시해준다. CURLOPT_VERBOSE 옵션을 TRUE로 설정해야 동작한다. (PHP 5.3.2 버전에서 추가됨)


CURLOPT_CRLF

TRUE로 설정하면 FTP 업로드시 본문의 유닉스 줄바꿈 문자(LF)를 CRLF 줄바꿈으로 변경해 전송한다.


CURLOPT_DNS_USE_GLOBAL_CACHE

기본적으로 TRUE로 설정되어 있으며 글로벌 DNS 캐시를 사용한다. 이 캐시 정보는 한 프로세스 안에서만 유효하다. 이 캐시 정보는 thread-safe 하지 않다.


CURLOPT_FAILONERROR

TRUE로 설정하면 HTTP 응답이 400 이상일 때 응답 내용을 가져오지 않고 실패로 취급한다. 그렇게 되면 curl_exec() 함수에서는 FALSE를 리턴한다.


CURLOPT_FILETIME

TRUE로 설정하면 서버에서 응답하는 Last-Modified: 헤더의 시각을 읽어서 저장해둔다. 이 시각은 curl_getinfo() 함수에서 CURLINFO_FILETIME 옵션으로 읽어올 수 있다.


CURLOPT_FOLLOWLOCATION

TRUE로 설정하면 서버에서 Location: 헤더를 응답했을 때 그 주소로 다시 요청을 시도한다. 이 작업은 재귀적으로 이루어지며 CURLOPT_MAXREDIRS 값이 세팅되어 있지 않으면 Location: 헤더가 나올때마다 계속 따라 이동하게 된다.


CURLOPT_FORBID_REUSE

TRUE로 설정하면 리퀘스트 후 커넥션을 명시적으로 종료한다. 일반적으로는 사용된 커넥션의 접속을 끊지 않고 내부적으로 유지하고 있지만 이 옵션을 사용하면 즉시 접속을 종료시킨다. 정확한 동작을 이해하지 못한다면 사용에 주의해야 한다.


CURLOPT_FRESH_CONNECT

TRUE로 설정하면 이미 캐시된 커넥션을 사용하지 않고 새로운 커넥션을 생성해 사용한다. 새로 커넥션이 생성되면서 커넥션 풀이 가득 차는 경우 풀링된 커넥션 중 하나가 종료될 수 있다. 정확한 동작을 이해하지 못한다면 사용에 주의해야 한다.


CURLOPT_FTP_USE_EPRT

TRUE로 설정하면 Active 모드의 FTP 서버에서 다운로드를 할 때 EPRT, LPRT 명령을 사용한다. FALSE로 설정하면 대신 PORT 명령을 사용한다.


CURLOPT_FTP_USE_EPSV

TRUE로 설정하면 FTP 전송시 먼저 EPSV 명령을 시도하고 실패하면 PASV 명령을 실행한다. FALS로 설정하면 EPSV 명령을 사용하지 않는다.


CURLOPT_FTP_CREATE_MISSING_DIRS

TRUE로 설정하면 FTP 작업 중 존재하지 않는 디렉토리에 대해 작업하려고 할 때 자동으로 디렉토리를 생성한다.


CURLOPT_FTPAPPEND

TRUE로 설정하면 FTP 업로드를 할 때 파일을 덮어쓰는 대신 이어 올리기를 한다.


 

 

 



CURLOPT_FTPASCII

CURLOPT_TRANSFERTEXT 옵션과 같은 일을 하는 다른 이름의 옵션이다. CURLOPT_TRANSFERTEXT 옵션을 쓰는걸 권장한다.


CURLOPT_FTPLISTONLY

TRUE로 설정하면 FTP URL을 불러올 때 파일의 부가정보를 제외한 파일/디렉토리명만 보여준다.


CURLOPT_HEADER

TRUE로 설정하면 출력 결과에 헤더 정보를 포함해 보여준다.


CURLINFO_HEADER_OUT

TRUE로 설정하면 요청하는 헤더 정보를 나중에 curl_getinfo() 함수에서 CURLINFO_HEADER_OUT 옵션으로 읽어올 수 있다. CURLINFO_ 접두어는 의도적으로 다르게 붙인 것이라고 한다. (PHP 5.1.3 버전에서 추가됨)


CURLOPT_HTTPGET

TRUE로 설정하면 기본 요청 메소드를 GET으로 변경한다. 기본 요청 메소드는 GET이 기본 값이므로 이 옵션은 요청 메소드가 변경되었을 때만 필요할 것이다.


CURLOPT_HTTPPROXYTUNNEL

TRUE로 설정하면 CURLOPT_PROXY 옵션에 설정된 프록시를 통해 터널링 하게 된다.


CURLOPT_MUTE

TRUE로 설정하면 cURL 관련 함수들의 출력을 모두 차단한다.


CURLOPT_NETRC

TRUE로 설정하면 원격 사이트에 접속할 때 사용자 이름과 비밀번호를 ~/.netrc 파일에서 읽어 사용한다.


CURLOPT_NOBODY

TRUE로 설정하면 출력 결과에서 바디 부분을 제외한다. 전송받은 결과에서 바디 부분을 무시하는게 아니고 요청 메소드를 HEAD로 전송해 본문을 전송받지 않는다. 요청 후에 이 옵션을 FALSE로 변경해도 이후 요청은 계속 HEAD 메소드를 사용하게 되므로 CURLOPT_HTTPGET 등의 옵션을 이용해 원하는 메소드로 설정해줘야 한다.


CURLOPT_NOPROGRESS

기본적으로 TRUE로 설정되어 있으며 전송 상태를 표시하지 않도록 한다.


CURLOPT_NOSIGNAL

TRUE로 설정하면 PHP 프로세스로 보내지는 시그널을 모두 무시한다. 멀티 스레드 SAPI 환경에서는 자동으로 TRUE로 설정되므로 타임아웃 옵션의 사용 가능 하다. (cURL 7.10 버전에서 추가됨)


CURLOPT_POST

TRUE로 설정하면 POST 전송을 수행한다. HTML 폼에서 일반적으로 쓰이는 application/x-www-form-urlencoded 방식으로 전송한다.


CURLOPT_PUT

TRUE로 설정하면 PUT 파일 전송을 수행한다. 전송할 파일은 CURLOPT_INFILE, CURLOPT_INFILESIZE 옵션을 통해 지정해야 한다.


CURLOPT_RETURNTRANSFER

TRUE로 설정하면 curl_exec() 함수를 실행했을 때 전송 결과를 바로 출력시키지 않고 리턴 값으로 넘겨받게 된다.


CURLOPT_SSL_VERIFYPEER

FALSE로 설정하면 원격 서버의 인증서가 유효한지 검사하지 않는다. CURLOPT_CAINFO 옵션으로 대체할 인증서를 지정하거나 CURLOPT_CAPATH 옵션으로 인증서 디렉토리를 지정할 수 있다. 기본값은 TRUE이다. (cURL 7.12.2 버전에서 추가됨)


CURLOPT_TRANSFERTEXT

TRUE로 설정하면 FTP 전송에서는 ASCII 모드를 사용하고 LDAP 전송에서는 HTML 대신 텍스트 형식으로 전송한다. 윈도우즈 환경에서 STDOUT은 바이너리 모드로 설정되지 않는다.


CURLOPT_UNRESTRICTED_AUTH

TRUE로 설정하면 CURLOPT_FOLLOWLOCATION 옵션을 사용해 다른 주소를 호출할 때도 설정된 사용자 이름과 비밀번호를 전송한다. 다른 호스트명을 가진 주소라 할 지라도 전송된다.


CURLOPT_UPLOAD

TRUE로 설정하면 PUT 파일 전송을 수행한다. HTTP 전송의 경우 CURLOPT_PUT 옵션과 같다고 볼 수 있지만 그 외의 프로토콜에서는 이 옵션을 사용해야 업로드를 할 수 있다.


CURLOPT_VERBOSE

TRUE로 설정하면 전송 과정에 대한 자세한 정보를 출력한다. 이 내용은 STDERR를 통해 출력되는데 CURLOPT_STDERR 옵션을 통해 다른 스트림으로 출력할 수 있다.


 

 


오늘의 포스팅은 여기까지 하겠습니다. 다음편에서 curl_easy_setopt() 함수 옵션에 마무리를 짓겠습니다.


감사합니다.

728x90
반응형