cURL è una nota libreria per trattare gli url e gestire chiamate http.
Utilizzo una libreria per Laravel che mi permette di fare delle richieste HTTP da server a sever che si chiama ixudra/curl.
La libreria funziona a meraviglia, se non che, per un problema di configurazione del mio SO, ogni volta che aggiorno la libreria, cURL smette di funzionare.
Sommario
Il sintomo (undefined function Ixudra \ Curl\Curl_init())
Il sintomo del problema che Laravel esibisce è questo
Symfony\Component\Debug\Exception\FatalThrowableError
Call to undefined function Ixudra\Curl\curl_init()
In realtà il problema risiede ancora più in basso poiché nemmeno il client PHP è immune dagli effetti di questa errata configurazione; invocando semplicemente il client da riga di comando ho:
$ php -v PHP Warning: PHP Startup: Unable to load dynamic library 'curl.so' (tried: /usr/lib/php/20190902/curl.so (/usr/lib/php/20190902/curl.so: symbol curl_mime_addpart version CURL_OPENSSL_4 not defined in file libcurl.so.4 with link time reference), /usr/lib/php/20190902/curl.so.so (/usr/lib/php/20190902/curl.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP 7.4.6 (cli) (built: May 14 2020 10:02:44) ( NTS ) ...
Il problema
La radice del problema si trova nella directory /usr/local/lib
$ cd /usr/local/lib/ $ ll totale 12924 drwxr-xr-x 8 root root 4096 mag 27 08:48 ./ drwxr-xr-x 13 root root 4096 ott 17 2018 ../ -rw-r--r-- 1 root root 1006444 mag 23 2017 libcurl.a -rwxr-xr-x 1 root root 1042 mag 23 2017 libcurl.la* lrwxrwxrwx 1 root root 16 mag 21 19:12 libcurl.so.4 -> libcurl.so.4.4.0* -rwxr-xr-x 1 root root 542272 mag 23 2017 libcurl.so.4.4.0* ...
La “sconfigurazione” è dovuta alla presenza del link simbolico libcurl.so.4, la soluzione proposta è quella di interromperlo perché prenda il sopravvento la versione di sistema. Il fatto è che ogni volta che viene eseguito un aggiornamento di cURL, viene ripristinato anche questo link simbolico reintroducendo l’errore.
Una soluzione
Nell’attesa di escogitare una soluzione più definitiva ho seguito il consiglio che si dava nel forum:
$ sudo mv libcurl.so.4.4.0 libcurl.so.4.4.0.OLD
Così facendo non ho più il problema al client:
$ php -v PHP 7.4.6 (cli) (built: May 14 2020 10:02:44) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies with Xdebug v2.9.5, Copyright (c) 2002-2020, by Derick Rethans
Come si vede, l’errore è scomparso. Affinche anche Apache possa beneficiare della soluzione del problema occorre riavviarlo:
$ sudo service apache2 restart
A questo punto anche l’applicazione Laravel torna a funzionare.
Commenti recenti