bool 값으로 설정하는 옵션들

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 옵션을 통해 다른 스트림으로 출력할 수 있다.

integer 값으로 설정하는 옵션들

CURLOPT_BUFFERSIZE

읽기 작업시 사용될 버퍼 크기를 지정한다. 하지만 늘 버퍼를 가득 채워가며 작업하지는 않는다. (cURL 7.10에서 추가됨)

CURLOPT_CLOSEPOLICY

cURL이 관리하는 커넥션 풀이 CURLOPT_MAXCONNECTS 만큼 생성됐을 때 다음 커넥션을 생성하려면 이전 커넥션 하나를 닫아야 하는데 어떤 커넥션을 닫을지의 기준이 되는 정책을 지정한다.

CURLCLOSEPOLICY_LEAST_RECENTLY_USED(가장 적게 사용된 것 지우기) 또는 CURLCLOSEPOLICY_OLDEST(가장 오래된 것 지우기) 값을 사용할 수 있고 다른 CURLCLOSEPOLICY_ 상수가 존재하긴 하지만 아직 cURL이 지원하지 않는 상태다.

CURLOPT_CONNECTTIMEOUT

커넥션을 하기 위해 최대로 대기할 시간을 초 단위로 지정한다. 0으로 지정하면 무한히 기다리게 된다.

CURLOPT_CONNECTTIMEOUT_MS

커넥션을 하기 위해 최대로 대기할 시간을 밀리세컨드 단위로 지정한다. 0으로 지정하면 무한히 기다리게 된다. libcurl이 시스템 표준 이름을 사용하도록 빌드된 경우 대기 시간은 초단위로만 지정할 수 있으며 최소 대기 시간은 1초로 고정된다. (cURL 7.16.2, PHP 5.2.3 버전에서 추가됨)

CURLOPT_DNS_CACHE_TIMEOUT

DNS 정보를 메모리에 유지할 시간을 초단위로 지정한다. 기본 값은 120초.

CURLOPT_FTPSSLAUTH

FTP 인증 방법을 지정한다. CURLFTPAUTH_SSL (SSL을 먼저 시도), CURLFTPAUTH_TLS (TLS를 먼저 시도), CURLFTPAUTH_DEFAULT (자동으로 결정) 값을 사용할 수 있다. (cURL 7.12.2 버전에서 추가됨)

CURLOPT_HTTP_VERSION

요청시 사용할 HTTP 버전을 지정한다. CURL_HTTP_VERSION_NONE (기본값, 자동으로 결정), CURL_HTTP_VERSION_1_0 (HTTP/1.0 사용), CURL_HTTP_VERSION_1_1 (HTTP/1.1 사용) 값을 사용할 수 있다.

CURLOPT_HTTPAUTH

HTTP 인증에 사용할 방법을 지정한다. CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, CURLAUTH_ANYSAFE 값을 OR 비트 연산(|)으로 조합해 사용한다. 이 값이 지정되면 cURL이 지정된 값 중에 가장 적합한 방법을 선택한다.

CURLAUTH_ANY, CURLAUTH_ANYSAFE 상수는 아래처럼 미리 조합된 값이다.

CURLAUTH_ANY = CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM
CURLAUTH_ANYSAFE = CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM

CURLOPT_INFILESIZE

업로드할 파일의 크기를 바이트 단위로 지정한다. 실제 파일 크기보다 작은 값을 지정한다고 해도 지정된 값만큼 전송하고 멈추지는 않는다. 실제로 전송된 내용은 CURLOPT_READFUNCTION 함수에서 리턴하는 값에 의존한다.

CURLOPT_LOW_SPEED_LIMIT

최하 전송 속도를 초당 전송될 바이트 단위로 지정한다. 이 속도가 CURLOPT_LOW_SPEED_TIME 옵션으로 지정된 시간 만큼 지속되면 전송이 취소된다.

CURLOPT_LOW_SPEED_TIME

CURLOPT_LOW_SPEED_LIMIT 옵션으로 지정된 속도 이하로 전송될 수 있는 최대 시간을 초단위로 지정한다. 이 시간 이상 지속되면 전송이 취소된다.

CURLOPT_MAXCONNECTS

내부적으로 유지할 최대 커넥션 수를 지정한다. 커넥션이 이 수치만큼 많아지면 CURLOPT_CLOSEPOLICY 옵션에 지정된 규칙대로 커넥션을 닫는다.

CURLOPT_MAXREDIRS

리디렉션 될 수 있는 최대 횟수를 지정한다. CURLOPT_FOLLOWLOCATION 옵션과 함께 사용된다.

CURLOPT_PORT

URL과 상관없이 접속할 포트를 지정한다.

CURLOPT_PROTOCOLS

libcurl이 사용할 프로토콜을 비트마스크로 지정한다. 다양한 프로토콜을 사용할 수 있도록 libcurl이 빌드되어 있더라도 이 옵션을 통해 사용 가능한 프로토콜을 제한할 수 있다. (cURL 7.19.4 버전에서 추가됨)

CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_FTP, CURLPROTO_FTPS, CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_TELNET, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_TFTP, CURLPROTO_ALL 옵션을 OR 비트 연산(|)으로 조합해 사용한다.

CURLOPT_PROXYAUTH

프록시 접속에 사용할 HTTP 인증 방법을 지정한다. CURLOPT_HTTPAUTH 옵션에서 설명한 것과 동일한 값을 사용할 수 있지만 프록시 인증에 사용할 수 있는 방법은 CURLAUTH_BASICCURLAUTH_NTLM 두 가지 뿐이다. (cURL 7.10.7 버전에서 추가됨)

CURLOPT_PROXYPORT

프록시 접속에 사용할 포트를 지정한다. CURLOPT_PROXY 옵션에서 URL을 지정하며 함께 지정할 수도 있다.

CURLOPT_PROXYTYPE

프록시 서버의 형태를 지정한다. CURLPROXY_HTTP (기본값), CURLPROXY_SOCKS5 중 하나를 사용할 수 있다. (cURL 7.10 버전에서 추가됨)

CURLOPT_REDIR_PROTOCOLS

리디렉션에 사용될 프로토콜을 CURLOPT_PROTOCOLS 옵션에서와 같이 지정한다. CURLOPT_FOLLOWLOCATION 옵션을 지정해 리디렉션을 지원하는 경우 특정 프로토콜만 리디렉션을 하도록 제한 할 수 있다. 기본적으로는 FILE과 SCP 프로토콜을 제외한 모든 프로토콜을 허용한다. (cURL 7.19.4 버전에서 추가됨)

CURLOPT_RESUME_FROM

전송을 이어서 진행할 바이트 단위의 오프셋을 지정한다.

CURLOPT_SSL_VERIFYHOST

인증서의 호스트 정보를 확인하는 방법을 지정한다. 1로 지정하면 인증서에 일반 호스트명이 존재하는지만 확인하고 2로 지정하면 추가로 실제 호스트명과 일치하는지 확인한다. 실제 운영 환경에서는 이 값을 2로 지정해야 한다. (기본값은 2)

CURLOPT_SSLVERSION

사용할 SSL 버전을 2, 3 중에 지정한다. 기본적으로는 PHP가 결정하지만 수동으로 설정할 수도 있다.

CURLOPT_TIMECONDITION

CURLOPT_TIMEVALUE 옵션에 설정된 값을 어떻게 다룰지 지정한다. CURLOPT_TIMEVALUE 옵션에 설정된 시각 이후에 변경된 페이지만 가져오고 싶을 때는 CURL_TIMECOND_IFMODSINCE 라고 지정하면 페이지가 변경되지 않았고 CURLOPT_HEADER 옵션이 TRUE로 설정됐을 경우 304 Not Modified 응답을 받을 수 있다. CURL_TIMECOND_IFUNMODSINCE 옵션은 반대로 동작하고 기본 값은 CURL_TIMECOND_IFMODSINCE이다.

CURLOPT_TIMEOUT

cURL 함수가 실행될 수 있는 최대 시간을 초단위로 지정한다.

CURLOPT_TIMEOUT_MS

cURL 함수가 실행될 수 있는 최대 시간을 밀리세컨드 단위로 지정한다. libcurl이 시스템 표준 이름을 사용하도록 빌드된 경우 대기 시간은 초단위로만 지정할 수 있으며 최소 대기 시간은 1초로 고정된다. (cURL 7.16.2, PHP 5.2.3 버전에서 추가됨)

CURLOPT_TIMEVALUE

CURLOPT_TIMECONDITION 옵션에서 사용될 기준이 되는 시각을 유닉스 타임스탬프로 지정한다.

CURLOPT_MAX_RECV_SPEED_LARGE

최대 다운로드 속도를 초당 전송될 바이트 단위로 지정한다. 다운로드 중에 평균 속도가 이 값을 초과하면 평균 속도가 이 값 이하가 될 때 까지 기다린다. 기본 값은 무제한이다. (cURL 7.15.5, PHP 5.4.0 버전에서 추가됨)

CURLOPT_MAX_SEND_SPEED_LARGE

최대 업로드 속도를 초당 전송될 바이트 단위로 지정한다. 업로드 중에 평균 속도가 이 값을 초과하면 평균 속도가 이 값 이하가 될 때 까지 기다린다. 기본 값은 무제한이다. (cURL 7.15.5, PHP 5.4.0 버전에서 추가됨)

CURLOPT_SSH_AUTH_TYPES

SSH 인증 방식을 지정한다. CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD 중 하나를 지정할 수 있고 CURLSSH_AUTH_ANY로 지정하면 libcurl이 적당한 방식을 자동으로 선택한다.

string 값으로 설정하는 옵션들

CURLOPT_CAINFO

서버를 확인할 수 있는 임의의 인증서 위치를 절대경로로 지정한다. CURLOPT_SSL_VERIFYPEER 옵션과 함께 사용해야 한다.

CURLOPT_CAPATH

서버를 확인할 수 있는 임의의 인증서들이 저장된 디렉토리를 지정한다. CURLOPT_SSL_VERIFYPEER 옵션과 함께 사용해야 한다.

HTTP 요청시 Cookie: 헤더에 전송될 값을 지정한다. 여러개의 쿠키를 전송해야 할 때는 세미콜론과 공백으로 구분한다. (예: fruit=apple; colour=red)

CURLOPT_COOKIEFILE

서버에 전송할 쿠키 데이터 파일명을 지정한다. 데이터 파일은 Netscape 쿠키 파일 형식이거나 일반적인 HTTP 헤더 스타일로 표현되어야 한다. 파일명에 빈 문자열을 지정할 경우 아무런 쿠키도 불러오지 않지만 서버로부터 전송받은 쿠키를 메모리에 담고 있다 요청할때 같이 보내는 쿠키 핸들링이 사용 가능해진다.

CURLOPT_COOKIEJAR

서버에서 전송받은 쿠키 데이터를 저장할 파일명을 지정하면 cURL 핸들이 닫힐 때 파일이 저장된다. (예: curl_close() 함수로 종료)

CURLOPT_CUSTOMREQUEST

GETHEAD 요청 대신 사용할 임의의 메소드를 지정한다. DELETE 처럼 REST 요청을 할 때 사용할 수 있고 GETPOSTCONNECT 같은 식으로 지정해야 하고 완전한 한 라인을 작성하는건 아니다. 예를 들면 GET /index.html HTTP/1.0\r\n\r\n 같은 식으로 지정하는건 올바른 방법이 아니다. 메소드를 지정하기 전에 서버가 지원하는 메소드인지 확인 하고 사용하도록 하자.

CURLOPT_EGDSOCKET

CURLOPT_RANDOM_FILE 옵션처럼 SSL 랜덤 시드 파일을 지정하지만 파일명 대신 엔트로피 생성 데몬 소켓 주소를 지정해야 한다.

CURLOPT_ENCODING

Accept-Encoding: 헤더의 내용을 지정한다. 여기에  지정된 방법으로 인코딩된 결과가 돌아오면 알아서 디코딩 해준다. identity, deflategzip 세 가지의 인코딩을 지원하고 빈 문자열로 지정하면 가능한 모든 인코딩을 포함하는 헤더가 요청된다.

CURLOPT_FTPPORT

FTP "POST" 명령에 사용될 네트워크를 지정한다. "POST" 명령은 서버에게 지정된 곳으로 접속하도록 요청할 것이다. 여기에 지정할 수 있는 값은 IP 주소, 호스트명, 네트워크 인터페이스 이름(유닉스의 경우)이고 '-' 라고 쓸 경우 시스템 기본 IP를 사용하게 된다.

CURLOPT_INTERFACE

외부로 향하는 네트워크 인터페이스의 이름을 지정한다. 인터페이스의 이름, IP 주소, 호스트명 중 하나를 지정할 수 있다.

CURLOPT_KEYPASSWD

CURLOPT_SSLKEY 또는 CURLOPT_SSH_PRIVATE_KEYFILE 개인키에서 사용될 비밀번호를 지정한다.

CURLOPT_KRB4LEVEL

KRB4 (Kerberos 4) 보안 수준을 지정한다. clear, safe, confidential, private 중에 하나를 사용할 수 있다(보안성이 낮은 순서에서 강력한 순서로 나열됨). 이 4개 외에 다른 값을 지정하면 private이 지정되고 NULL값을 지정하면 KRB4 보안이 해제된다. 지금은 FTP 전송 작업에만 KRB4 보안 기능을 사용할 수 있다.

CURLOPT_POSTFIELDS

POST로 전송될 데이터를 지정한다. 파일을 전송할 경우에는 파일의 절대 경로 앞에 @를 붙이면 되고 파일 형식을 명시적으로 지정하려면 파일명 뒤에 ';type=mimetype' 같은 식으로 추가하면 된다. 파라미터 값은 'para1=val1&para2=val2&...' 같은 식으로 URL 인코딩된 값들을 넘겨도 되고 필드 이름을 키로 가지며 필드 값을 데이터로 가지는 배열로 넘겨도 된다. PHP 5.2.0 버전부터 파일을 @ 접두사가 붙은 파일명으로 넘길때는 배열의 형태로 넘겨야만 한다.

이 옵션의 값을 URL 인코딩된 문자열로 지정할 경우 Content-Type 헤더는 application/x-www-form-urlencoded 값으로 설정되고 배열로 지정할 경우는 multipart/form-data 값으로 설정된다.

CURLOPT_PROXY

사용할 프록시 서버의 IP나 호스트명을 지정한다. 포트 번호는 이 옵션에서 proxy_host:80 처럼 한 번에 지정할 수도 있고 CURLOPT_PROXYPORT 옵션을 통해 따로 지정할 수도 있다.

CURLOPT_PROXYUSERPWD

프록시 접속에 사용할 접속 정보를 "[username]:[password]" 같은 형식으로 지정한다.

CURLOPT_RANDOM_FILE

SSL 접속에 사용되는 난수를 초기화 하기 위한 시드가 될 파일명을 지정한다.

CURLOPT_RANGE

요청시 Range: 헤더에 쓰일 요청 범위를 "X-Y" 같은 형식으로 지정한다. X, Y는 생략 가능한 값이며 "X-Y,N-M" 형태의 쉼표로 구분된 값도 사용할 수 있다.

CURLOPT_REFERER

요청시 Referer: 헤더에 쓰일 URL을 지정한다.

CURLOPT_SSH_HOST_PUBLIC_KEY_MD5

SCP, SFTP 접속시 서버 공개키의 MD5 해시와 비교할 값을 지정한다. 서버 공개키의 해시와 지정한 해시값이 다르다면 연결을 하지 않는다. (cURL 7.17.1 버전에서 추가됨)

CURLOPT_SSH_PUBLIC_KEYFILE

접속시 사용할 공개 키 파일을 지정한다. 지정하지 않으면 libcurl이 자동으로 키 파일을 찾는데 환경변수 HOME이 설정돼 있을 경우는 $HOME/.ssh/id_dsa.pub 파일을 사용하고 환경변수가 설정돼있지 않으면 현재 디렉토리의 id_dsa.pub 파일을 사용한다. (cURL 7.16.1 버전에서 추가됨)

CURLOPT_SSH_PRIVATE_KEYFILE

접속시 사용할 개인 키 파일을 지정한다. 지정하지 않으면 libcurl이 자동으로 키 파일을 찾는데 환경변수 HOME이 설정돼 있을 경우는 $HOME/.ssh/id_dsa 파일을 사용하고 환경변수가 설정돼있지 않으면 현재 디렉토리의 id_dsa 파일을 사용한다. 파일이 비밀번호로 보호되어 있을 경우에는 CURLOPT_KEYPASSWD 옵션으로 비밀번호를 지정해줘야 한다. (cURL 7.16.1 버전에서 추가됨)

CURLOPT_SSL_CIPHER_LIST

SSL 접속에 사용할 암호화 방법을 지정한다. RC4-SHATLSv1 중 하나를 사용할 수 있다.

CURLOPT_SSLCERT

PEM 형태의 인증서를 담고 있는 파일을 지정한다.

CURLOPT_SSLCERTPASSWD

CURLOPT_SSLCERT 옵션에서 지정한 인증서에 사용될 비밀번호를 지정한다.

CURLOPT_SSLCERTTYPE

인증서의 형태를 지정한다. PEM (기본 값), DER, ENG 중 하나를 사용할 수 있다. (cURL 7.9.3 버전에서 추가됨)

CURLOPT_SSLENGINE

CURLOPT_SSLKEY 옵션에서 지정된 SSL 개인 키의 암호와 엔진 종류를 지정한다.

CURLOPT_SSLENGINE_DEFAULT

비대칭 암호화 연산에 사용할 암호화 엔진 종류를 지정한다.

CURLOPT_SSLKEY

SSL 개인 키를 담고 있는 파일을 지정한다.

CURLOPT_SSLKEYPASSWD

CURLOPT_SSLKEY 옵션에서 지정된 SSL 개인 키를 사용하기 위한 비밀번호를 지정한다. 매우 중요한 비밀번호가 PHP 소스 코드 내에 기술되므로 PHP 소스 코드를 안전하게 보관해야 할 것이다.

CURLOPT_SSLKEYTYPE

CURLOPT_SSLKEY 옵션에서 지정된 SSL 개인 키의 형태를 지정한다. PEM (기본 값), DERENG 중 하나를 사용할 수 있다.

CURLOPT_URL

접속할 URL을 지정한다. curl_init() 함수를 통해 세션을 초기화 할 때 지정할 수도 있다.

CURLOPT_USERAGENT

요청시 User-Agent: 헤더에 쓰일 문자열을 지정한다.

CURLOPT_USERPWD

요청시 사용할 접속 정보를 "[username]:[password]" 같은 형식으로 지정한다.

array 값으로 설정하는 옵션들

CURLOPT_HTTP200ALIASES

서버에서 응답하는 HTTP 상태 코드 중 오류가 아닌 200으로 취급할 상태 코드를 지정한다. (cURL 7.10.3 버전에서 추가됨)

CURLOPT_HTTPHEADER

요청시 사용할 HTTP 헤더 정보를 array('Content-type: text/plain', 'Content-length: 100') 형태로 지정한다.

CURLOPT_POSTQUOTE

FTP 요청 후 실행할 명령어들을 지정한다.

CURLOPT_QUOTE

FTP 요청 전 실행할 명령어들을 지정한다.

Stream Resource 값으로 설정하는 옵션들

fopen() 함수 등으로 얻어진 stream resource 변수를 지정한다.

CURLOPT_FILE

전송받는 내용이 기록될 파일을 지정한다. 지정하지 않으면 STDOUT이 사용된다.

CURLOPT_INFILE

업로드할 파일을 지정한다.

CURLOPT_STDERR

STDERR를 통해 출력되는 내용을 가로채 기록할 파일을 지정한다.

CURLOPT_WRITEHEADER

전송받는 내용의 헤더 부분이 기록될 파일을 지정한다.

콜백 함수 이름으로 설정하는 옵션들

CURLOPT_HEADERFUNCTION

전송받는 내용의 헤더 부분을 기록할 함수를 지정한다. 첫 번째 파라미터로 cURL 리소스, 두 번째 파라미터로 쓰여질 헤더 데이터 이렇게 두 개의 파라미터를 전달하고 쓰여진 바이트 수를 리턴해야 한다.

CURLOPT_PASSWDFUNCTION

비밀번호를 읽어올 함수를 지정한다. 첫 번째 파라미터로 cURL 리소스, 두 번째 파라미터로 비밀번호 프롬프트를 담고 있는 문자열, 세 번째 파라미터로 비밀번호의 최대 길이 이렇게 세 개의 파라미터를 전달하고 읽어온 비밀번호 문자열을 리턴해야 한다.

CURLOPT_PROGRESSFUNCTION

데이터를 읽어올 함수를 지정한다. 첫 번째 파라미터로 cURL 리소스, 두 번째 파라미터로 파일 디스크립터 변수, 세 번째 파라미터로 읽어올 길이 이렇게 세 개의 파라미터를 전달하고 데이터를 담고 있는 문자열을 리턴해야 한다.

위와 같이 설명되어 있지만 실제로는 다르게 동작하는 것 같다. 전달받는 파라미터는 다운로드할 전체 용량, 지금까지 다운로드 받은 용량, 업로드할 전체 용량, 지금까지 업로드 한 용량 이렇게 네 개이다. CURLOPT_NOPROGRESS 옵션을 FALSE로 설정하고 이 콜백 함수를 지정하면 대략 1초에 한 번 정도 함수가 실행된다.

CURLOPT_READFUNCTION

CURLOPT_INFILE 옵션을 지정했을 때 파일을 읽을 함수를 지정한다. 첫 번째 파라미터로 cURL 리소스, 두 번째 파라미터로 CURLOPT_INFILE 옵션에 지정된 스트림 변수, 세 번째 파라미터로 읽어올 최대 바이트 수 이렇게 세 개의 파라미터를 전달하고 읽어진 데이터를 리턴해야 한다. 리턴할 데이터의 크기는 세 번째 파라미터로 전달된 값보다 작거나 같아야 하며 스트림의 데이터를 모두 읽었을 때 EOF의 의미로 빈 문자열을 리턴해야 한다.

CURLOPT_WRITEFUNCTION

전송받는 내용의 바디 부분을 기록할 함수를 지정한다. 첫 번째 파라미터로 cURL 리소스, 두 번째 파라미터로 쓰여질 내용 이렇게 두 개의 파라미터를 전달하고 쓰여진 바이트 수를 리턴해야 한다.

참고