14
Il cURL è uno degli strumenti più utili presente nativamente sui sistemi Linux.
Si tratta di un tool da riga di comando per il trasferimento di file mediante l’uso di sintassi URL.
Supporta tantissimi protocolli quali FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, supporta i certificati SSL, permette l’invio di dati mediante HTTP POST, accetta i coockie e, soprattutto, è un ottimo simulatore di operazioni utente compiute via browser, eventualmente automatizzate.
Proprio per la peculiarità di essere un software command line, è spesso integrato in altre ambienti software proprio per demandare ad esso tutte le operazioni legate alle connessioni HTTP.
La piattaforma LAMP (Linux, Apache, MySql e PHP) è uno di questi.
Seppur non nativamente integrato in sistemi Windows, è possibile installare cURL ed integrarlo per farlo funzionare correttamente con ambienti WAMP (Windows, Apache, MySql e PHP).
Presentiamo di seguito i passi per l’installazione di su un sistema Windows XP di:
Le seguenti istruzioni dovrebbero essere valide anche per Windows 2000, mentre non ho testato la configurazione su Windows Vista.
Prima di tutto occorre installare l’ambiente WAMP.
Attenzione, l’installazione di PHP deve essere eseguita manualmente, senza l’utilizzo di installer!
Segnalo un’ottima guida italiana su PHPNews che vi aiuterà in questo compito.
Partiamo ora all’installazione di cURL.
- Da http://curl.haxx.se/download.html scaricate la copia di cURL adatta al vostro sistema, che dovrebbe essere un Windows XP. Io uso la versione Generic. C’è anche un comodo Download Wizard se avete qualche dubbio;
- Scompattate il file zip in un’area del vostro disco;
- Assicuratevi, ora, di possedere la DLL msvcr70.dll nella cartella <WINDOWS>\system32 (solitamente c:\WINDOWS\system32).
Se non fosse presente, crecatela con Google, scaricatela e copiatela in <WINDOWS>\system32
Passiamo ora all’attivazione del modulo php_curl.
- Assicuratevi di copiare i file libeay32.dll e ssleay32.dll dalla cartella di installazione di PHP alla cartella <WINDOWS>\system32;
- Abilitate il modulo php_curl semplicemente aggiungendo la riga
extension=php_curl.dll
nella sezione extension del php.ini, o scommentandola se già presente; - Riavviate Apache.
Abbiamo completato così la nostra installazione di cURL per PHP, non ci resta che testare il tutto con del semplice codice come quello seguente.
<?php
$url = “http://www.effetticollaterali.it”;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$returned = curl_exec($ch);
curl_close ($ch);
echo $returned;
?>
Spero sia tutto chiaro e soprattutto funzionante!
Se vi fossero problemi, vi invito ad utilizzare i commenti per le richieste di supporto.
Diego Purpo
ciao ho eseguito le tue istruzione però qua ndo scarico il curl e vado a lanciale curl.exe ho un errore “installazione non correttamente inizializzata….etc….” non capisco il perchè puoi aiutarmi?
Ciao Antonio.
Se lanci curl.exe da riga di comando effettivamente dovrebbe darti errore perché non trova una dll. E’ possibile.
La procedura che ho descritto, però, è limitata all’installazione di curl come modulo php. Questo ti funziona? Sei riuscito a completare tutto il processo?
Altra domanda, che versione di curl hai scaricato dal sito?
Ciao
ciao, ti volevo fareuna domanda, ho un sito web e volevo installare un componente ma mi ha dato errore perchè richiedeva il CURL sai se lo posso installare sul mio spazio web per far funzionare il componente io uso joomla…
grazie per l’aiuto
Purtroppo non tutti gli spazi host, free o a pagamento che siano, offorno il supporto al modulo cURL per PHP.
Dovresti verificare le specifiche del tuo hosting e/o richiedere info al tuo fornitore di servizio.
Quello che è sicuro è che non potrai installare applicativi come il cURL sul tuo spazio, ma deve necessariamente essere già installato sul server. Per fare una cosa del genere dovresti avere un servizio di housing, con un server a te dedicato dove poter installare ciò che vuoi.
Sono comunque convinto che alcune offerte hosting comprendono il modulo cURL, e ti sarà facile trovarle.
Un consiglio: è molto più facile che un hosting linux metta a disposizione il modulo cURL, piuttosto che un hosting windows.
Ciao
ciao ho fatto quello che mi hai detto ma quando vado a lanciare curl.exe mi da il seguente errore:
Impossibile trovare il punto di accesso ASN1_STRING_data della procedura nella libreria di collegamento dinamico libeay32.dll
cosa posso fare?
Il motivo dell’errore è legato all’assenza delle dll di curl per abilitare l’ssl.
L’installazione che hai fatto seguendo le istruzioni è sufficiente a far funzionare il modulo curl di php in locale, ma se desideri utilizzare anche chiamate ssl con curl ti consiglio di seguire questi passi:
Non dovresti avere più il problema che segnali quando lanci curl da riga di comando.
Ciao a tutti,
avrei un problema nell’uso del curl inserisco questo codice
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
$info = curl_getinfo($curl);
//curl_close ($curl);
if ($output === 0 || $info['http_code'] != 200) {
print_r (”nella prima parte”);
$output = “No cURL data returned for $url [".$info['http_code'].”]”;
$result = 0;
print_r ($output.”");
if (curl_error($curl)){
$output.= “\n”. curl_error($curl);
print_r ($output.”");
}
}
else {
print_r (”seconda parte”);
$result = 1;
non vate caso hai print li usco per un debug personale.
Ma ottengo quasta risposta
Unsupported protocol: http
Qualcuno per caso sa come aiutarmi?????
vi premetto che programmo in php da tanto tempo ma solo ora sto usando il curl, lavoro sotto windows xp
grazie a tutti
Ciao Saso.
Il tuo codice funziona, di questo puoi stare tranquillo.
L’url che invochi è remota o locale al tuo pc?
Ricevi lo stesso problema anche cambiando url di destinazione (es. http://www.google.it)?
Sembra un problema di installazione del curl o addirittura di Apache.
Attualmente, cmq, non riesco a riprodurre il problema.
Dimmi un po’ che versione di Apache, PHP e curl usi.
ciao.
ho seguito passo passo le tue istruzioni e purtroppo continuo ad avere il problema del
Fatal error: Call to undefined function curl_init() ecc. ecc.
sinceramente non riesco a venirne a capo.
uso winXP e il pacchetto xampp 1.6.6a con:
Apache 2.2.8
MySQL 5.0.51a
PHP 5.2.5 + PHP 4.4.8 + PEAR
forse sbaglio con le directory?
da phpinfo non riesco a capire se il modulo è correttamente istallato (anche se nel php.ini è a posto)
hai qualche idea da suggerirmi?
grazie
Carlo
Ciao Carlo.
L’errore che ricevi è legato al fatto che l’estensione di php per cURL non è attiva.
Sei sicuro di aver seguito tutti i passi?
In particolare, hai modificato il php.ini indicando la dll da includere e riavviato Apache?
Inoltre, il fatto che tu abbia installato 2 versioni di php potrebbe causare qualche problema, soprattutto se i file php.ini non sono ben distinti.
Per verificare se l’estensione di cURL è attiva, nel phpinfo troverai una sezione dedicata proprio al modulo cURL.
Cerca quindi il termina “cURL” nel tuo phpinfo ed assicurati che lo stesso sia abilitato (cURL support = enabled)
Sempre nel phpinfo verifica quale versione di php ti risponde (se la 5.2.5 o la 4.4.8) e verifica se la cartella indicata come extension_dir corrisponde a quella dove hai copiato la dll del cURL
Eumene
ciao, Eumene.
Ho appena acceso il PC per riprovare con l’stallazione e, manco a dirlo, il problema è scomparso.
In pratica, riavviando solo Apache, le modifiche non avevano effetto. Riavviato il sistema, l’errore è scomparso.
Grazie mille per il tuo tutorial e per la tua disponibilità
A presto
Ottimo, direi!
Sono contento che il mio tutorial ti sia stato utile.
Buon lavoro.
Eumene
Grandioso è stato più semplice di quello che pensavo installare curl. Ottimo tutorial
Grazie mille per il post è l’unico che sono riuscito seguire ottimo lavoro!
Ciao,
scusa la domanda ma questa per me è una cosa nuova e penso di non aver ben capito; ho seguito le tue istruzioni ma ottengo sempre lo stesso errore (Fatal error: Call to undefined function curl_init()….), inoltre non ho capito cosa fare con la copia di cURL che ho scaricato e scompattato sul mio disco.
Grazie
Ciao Matteo.
In merito al curl scaricato sul tuo pc, che ti consiglio di scompattare in C:/ (se hai installato php sotto c:/ – installazione tipica) serve solo a dotare WIN del compoente cURL
L’errore che ricevi è a causa dell’assenza dell’estensione cURL di PHP.
2 domande.
1. hai modificato il php.ini e riavviato il tuo apache?
2. puoi verificare che nella cartella delle estensioni di php sia presente la dll php_curl.dll?
Grazie, sono riuscito a risolvere il problema; non funzionava proprio perchè non avevo modificato correttamente il file php.ini
Grazie mille per l’ottimo tutorial, in un minuto tutto funziona alla perfezione.
Ciao, ho seguito la guida ma non funziona.
Ho provato a eseguire la tua procedura in ambiente Win2003 server, dove ho installato php v 5.2.14 e gira correttamente. Ho abilitato diverse estensioni e difatti le vedo nel phpinfo. Ma Curl come l’abilito mi blocca php! Mi restituisce errore http 500.
Io corretto il file php.ini (tolto il ; antecedente all’estensione curl) ho copiato le 2 dll nella system32 e ho riavviato IIS e poi anche il pc, ma niente…
Qualcuno mi aiuti: sto impazzendo!!!
La mia guida è orientata ad un Windows XP ipotizzando un’installazione per una macchiana di sviluppo.
La stessa guida, come tu mi dici, non funziona su sistemi Windows Server 2003.
Proverò cmq ad aiutarti.
Intanto puoi postare i log di errore generati su Apache.
Magari possono aiutarci a risalire al problema