Errore curl_reset su Mailchimp per Drupal

Lavorare con ambienti 'spaiati' ti fa saltar la cena.

29 September, 2016

Quando l'ambiente dove sviluppi non ha le stesse cofingurazioni di quello di produzione, sta sicuro l'inghippo sta dietro l'angolo. L'ideale sarebbe di poter sempre lavorare con strumenti e piattaforme che ti permettono di avere ambienti allineati in modo da minimizzare al massimo eventuali problemi in fase di rilascio. Ma non sempre è così, soprattutto quando, come in questo caso, il cliente ha già il suo hosting o i suoi server dedicati.

Ieri, dopo aver caricato tutto il lavoro nell'ambiente di produzione, ecco apparire quel fastidioso messaggio Fatal error. Bene... si parte con il debugging motivato dalla solita imprecazione di circostanza.

Il messaggio che appare caricando l'homepage non l'ho mai visto prima

Fatal error: Call to undefined function GuzzleHttp\Handler\curl_reset() in /home/powell/public_html/sites/all/libraries/mailchimp/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 78

e la cosa non mi piace, perché è sinonimo di "da questa sedia non ti alzerai per le prossime due ore" (tradotto significa "cena fredda e disappunto della mia cara moglie"). Per fortuna, a seguito di una veloce ricerca, ho trovato questa segnalazione nel progetto Mailchimp che mi ha dato il LA per risolvere il problema.

La soluzione

All'interno della classe CurlFactory.php vien utilizzata la funzione curl_reset() disponibile nella versione PHP >= 5.5.0.
Se nel mio ambiente di sviluppo sto utilizzando PHP 5.6.10, nell'ambiente di produzione del cliente c'è PHP 5.4.45. La prima cosa che mi è venuto in mente di fare è aggiornare la versione di PHP, ma per evitare di allungare i tempi di consegna ho optato per disinstallare il modulo di Mailchimp 7.x-4.5 e sostituirlo con la versione 7.x-3.6. La versione precedente infatti utilizza la libreria 2.0.x delle API Mailchimp che funziona con PHP >= 5.2.

In ogni caso evitate di lavorare su ambienti non allienali, eviterete di ritardare la consegna e trovare la cena fredda.