Skip to content
FAQ 51.6 KiB
Newer Older
Updated: Jun 9, 2009 (http://curl.haxx.se/docs/faq.html)
Daniel Stenberg's avatar
Daniel Stenberg committed
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

FAQ

Daniel Stenberg's avatar
Daniel Stenberg committed
 1. Philosophy
  1.1 What is cURL?
  1.2 What is libcurl?
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.3 What is curl not?
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.4 When will you make curl do XXXX ?
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.5 Who makes curl?
  1.6 What do you get for making curl?
  1.7 What about CURL from curl.com?
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.8 I have a problem who do I mail?
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.9 Where do I buy commercial support for curl?
  1.10 How many are using curl?
  1.11 Why don't you update ca-bundle.crt
  1.12 I have a problem who can I chat with?
Daniel Stenberg's avatar
Daniel Stenberg committed

 2. Install Related Problems
  2.1 configure doesn't find OpenSSL even when it is installed
   2.1.1 native linker doesn't find OpenSSL
   2.1.2 only the libssl lib is missing
Daniel Stenberg's avatar
Daniel Stenberg committed
  2.2 Does curl work/build with other SSL libraries?
  2.3 Where can I find a copy of LIBEAY32.DLL?
  2.4 Does curl support SOCKS (RFC 1928) ?
Daniel Stenberg's avatar
Daniel Stenberg committed

 3. Usage Problems
  3.1 curl: (1) SSL is disabled, https: not supported
  3.2 How do I tell curl to resume a transfer?
  3.3 Why doesn't my posting using -F work?
  3.4 How do I tell curl to run custom FTP commands?
  3.5 How can I disable the Pragma: nocache header?
  3.6 Does curl support ASP, XML, XHTML or HTML version Y?
Daniel Stenberg's avatar
Daniel Stenberg committed
  3.7 Can I use curl to delete/rename a file through FTP?
  3.8 How do I tell curl to follow HTTP redirects?
Daniel Stenberg's avatar
Daniel Stenberg committed
  3.9 How do I use curl in my favorite programming language?
  3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
  3.11 How do I POST with a different Content-Type?
Daniel Stenberg's avatar
Daniel Stenberg committed
  3.12 Why do FTP specific features over HTTP proxy fail?
  3.13 Why does my single/double quotes fail?
  3.14 Does curl support Javascript or PAC (automated proxy config)?
  3.15 Can I do recursive fetches with curl?
Daniel Stenberg's avatar
hm  
Daniel Stenberg committed
  3.16 What certificates do I need when I use SSL?
  3.17 How do I list the root dir of an FTP server?
Daniel Stenberg's avatar
Daniel Stenberg committed
  3.18 Can I use curl to send a POST/PUT and not wait for a response?
Daniel Stenberg's avatar
Daniel Stenberg committed

 4. Running Problems
  4.1 Problems connecting to SSL servers.
  4.2 Why do I get problems when I use & or % in the URL?
Daniel Stenberg's avatar
Daniel Stenberg committed
  4.3 How can I use {, }, [ or ] to specify multiple URLs?
  4.4 Why do I get downloaded data even though the web page doesn't exist?
  4.5 Why do I get return code XXX from a HTTP server?
   4.5.1 "400 Bad Request"
   4.5.2 "401 Unauthorized"
   4.5.3 "403 Forbidden"
   4.5.4 "404 Not Found"
   4.5.5 "405 Method Not Allowed"
Daniel Stenberg's avatar
Daniel Stenberg committed
  4.6 Can you tell me what error code 142 means?
  4.7 How do I keep user names and passwords secret in Curl command lines?
Daniel Stenberg's avatar
Daniel Stenberg committed
  4.9 Curl can't authenticate to the server that requires NTLM?
  4.10 My HTTP request using HEAD, PUT or DELETE doesn't work!
  4.11 Why does my HTTP range requests return the full document?
  4.12 Why do I get "certificate verify failed" ?
  4.13 Why is curl -R on Windows one hour off?
  4.14 Redirects work in browser but not with curl!
  4.16 My HTTP POST or PUT requests are slow!
  4.17 Non-functional connect timeouts on Windows
Daniel Stenberg's avatar
Daniel Stenberg committed

 5. libcurl Issues
  5.2 How can I receive all data into a large memory chunk?
Daniel Stenberg's avatar
Daniel Stenberg committed
  5.3 How do I fetch multiple files with libcurl?
  5.4 Does libcurl do Winsock initing on win32 systems?
  5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ?
  5.6 What about Keep-Alive or persistent connections?
  5.7 Link errors when building libcurl on Windows!
  5.8 libcurl.so.3: open failed: No such file or directory
  5.9 How does libcurl resolve host names?
Daniel Stenberg's avatar
Daniel Stenberg committed
  5.10 How do I prevent libcurl from writing the response to stdout?
  5.11 How do I make libcurl not receive the whole HTTP response?
  5.12 Can I make libcurl fake or hide my real IP address?
  5.13 How do I stop an ongoing transfer?
  5.14 Using C++ non-static functions for callbacks?
  5.15 How do I get an FTP directory listing? 
Daniel Stenberg's avatar
Daniel Stenberg committed

 6. License Issues
  6.1 I have a GPL program, can I use the libcurl library?
  6.2 I have a closed-source program, can I use the libcurl library?
  6.3 I have a BSD licensed program, can I use the libcurl library?
  6.4 I have a program that uses LGPL libraries, can I use libcurl?
  6.5 Can I modify curl/libcurl for my program and keep the changes secret?
  6.6 Can you please change the curl/libcurl license to XXXX?
  6.7 What are my obligations when using libcurl in my commercial apps?
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
 7. PHP/CURL Issues
  7.1 What is PHP/CURL?
  7.2 Who write PHP/CURL?
  7.3 Can I perform multiple requests using the same handle?

Daniel Stenberg's avatar
Daniel Stenberg committed
==============================================================================

1. Philosophy

  1.1 What is cURL?

Daniel Stenberg's avatar
Daniel Stenberg committed
  cURL is the name of the project. The name is a play on 'Client for URLs',
  originally with URL spelled in uppercase to make it obvious it deals with
  URLs. The fact it can also be pronounced 'see URL' also helped, it works as
  an abbreviation for "Client URL Request Library" or why not the recursive
Daniel Stenberg's avatar
Daniel Stenberg committed
  version: "Curl URL Request Library".
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  The cURL project produces two products:
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  libcurl

    A free and easy-to-use client-side URL transfer library, supporting FTP,
    FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE, LDAP and LDAPS.
    libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading,
    kerberos, HTTP form based upload, proxies, cookies, user+password
    authentication, file transfer resume, http proxy tunneling and more!
Daniel Stenberg's avatar
Daniel Stenberg committed

    libcurl is highly portable, it builds and works identically on numerous
    platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX,
    IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac
    OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...

    libcurl is free, thread-safe, IPv6 compatible, feature rich, well
    supported and fast.
Gisle Vanem's avatar
 
Gisle Vanem committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  curl

    A command line tool for getting or sending files using URL syntax.

    Since curl uses libcurl, it supports a range of common Internet protocols,
    currently including HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, LDAPS,
    DICT, TELNET and FILE.
Daniel Stenberg's avatar
Daniel Stenberg committed

  We pronounce curl and cURL with an initial k sound: [kurl].
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  There are numerous sub-projects and related projects that also use the word
  curl in the project names in various combinations, but you should take
  notice that this FAQ is directed at the command-line tool named curl (and
Daniel Stenberg's avatar
Daniel Stenberg committed
  libcurl the library), and may therefore not be valid for other curl-related
Daniel Stenberg's avatar
Daniel Stenberg committed
  projects. (There is however a small section for the PHP/CURL in this FAQ.)
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.2 What is libcurl?

  libcurl is a reliable and portable library which provides you with an easy
  interface to a range of common Internet protocols.
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  You can use libcurl for free in your application, be it open source,
  commercial or closed-source.
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  libcurl is most probably the most portable, most powerful and most often
  used C-based multi-platform file transfer library on this planet - be it
  open source or commercial.

Daniel Stenberg's avatar
Daniel Stenberg committed
  1.3 What is curl not?
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  Curl is not a wget clone. That is a common misconception.  Never, during
Daniel Stenberg's avatar
Daniel Stenberg committed
  curl's development, have we intended curl to replace wget or compete on its
  market. Curl is targeted at single-shot file transfers.

  Curl is not a web site mirroring program. If you want to use curl to mirror
Daniel Stenberg's avatar
Daniel Stenberg committed
  something: fine, go ahead and write a script that wraps around curl to make
  it reality (like curlmirror.pl does).

  Curl is not an FTP site mirroring program. Sure, get and send FTP with curl
  but if you want systematic and sequential behavior you should write a
Daniel Stenberg's avatar
Daniel Stenberg committed
  script (or write a new program that interfaces libcurl) and do it.

  Curl is not a PHP tool, even though it works perfectly well when used from
Daniel Stenberg's avatar
Daniel Stenberg committed
  or with PHP (when using the PHP/CURL module).
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
  Curl is not a program for a single operating system. Curl exists, compiles,
  builds and runs under a wide range of operating systems, including all
  modern Unixes (and a bunch of older ones too), Windows, Amiga, BeOS, OS/2,
  OS X, QNX etc.
Daniel Stenberg's avatar
Daniel Stenberg committed
  1.4 When will you make curl do XXXX ?

  We love suggestions of what to change in order to make curl and libcurl
  better. We do however believe in a few rules when it comes to the future of
Daniel Stenberg's avatar
Daniel Stenberg committed
  curl:
Daniel Stenberg's avatar
Daniel Stenberg committed

  * Curl -- the command line tool -- is to remain a non-graphical command line
    tool. If you want GUIs or fancy scripting capabilities, you should look
    for another tool that uses libcurl.
Daniel Stenberg's avatar
Daniel Stenberg committed

  * We do not add things to curl that other small and available tools already
Daniel Stenberg's avatar
Daniel Stenberg committed
    do very fine at the side. Curl's output is fine to pipe into another
    program or redirect to another file for the next program to interpret.
Loading
Loading full blame…