O PHP suporta a libcurl, uma biblioteca criada por Daniel Stenberg, que permite a você conectar e comunicar com vários tipos diferentes de servidor com vários tipos diferentes de protocolos. libcurl atualmente suporta os protocolos http, https, ftp, gopher, telnet, dict, file, e ldap. libcurl também suporta certificados HTTPS, HTTP POST, HTTP PUT, upload com FTP (isto também pode ser feito com a extensão de ftp do PHP), upload baseado em formulário HTTP, proxies, cookies, e autenticação usuário+senha.
Estas funções foram adicionadas no PHP 4.0.2.
Para poder usar as funções CURL você precisa instalar o pacote CURL. PHP requer que você use o CURL 7.0.2-beta ou posterior. PHP não irá funcionar com qualquer versão anterior a CURL 7.0.2-beta. No PHP 4.2.3, você precisa do CURL versão 7.9.0 ou posterior. A partir do PHP 4.3.0, você precisa da CURL versão que seja 7.9.8 ou posterior. PHP 5.0.0 irá precisar provavelmente da CURL versão posterior a 7.10.5
Para usar o suporte a CURL no PHP, você deverá compilar o PHP com --with-curl[=DIR] aonde DIR é a localização do diretório contendo os diretórios lib e include. No diretório "include" deve ter uma pasta chamada "curl" a qual deve conter os arquivos easy.h e curl.h. Deve haver um arquivo chamado libcurl.a localizado no diretório "lib". Começando no PHP 4.3.0 você pode configurar o PHP para usar o CURL para streams URL --with-curlwrappers.
Nota para usuários de Win32: Para ativar este módulo em um ambiente Windows, você deve copiar libeay32.dll e ssleay32.dll a partir da pasta DLL do pacote PHP/Win32 para a pasta SYSTEM do seu sistema Windows. (Ex: C:\WINNT\SYSTEM32 ou C:\WINDOWS\SYSTEM)
As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.
Após você ter compilado o PHP com suporte a CURL, você pode começar a usar as funções CURL. A idéia basica por trás das funções CURL é que você começa uma sessão CURL usando curl_init(), então você define todas as suas opções para a transferencia com curl_setopt(), então você executa a sessão com curl_exec() e você termona a sua sessão usando a função curl_close(). Aqui esta um exemplo que usa as funções CURL para obter a homepage example.com em um arquivo: