Installazione fallita: Download fallito. Nessun sistema di trasporto trovato
'Installation failed: Download failed. No working transports found'.
Questo errore si è verificato quando ho cercato di installare un tema in WordPress. Come posso risolvere questo problema?

Il sito WordPress funzionava per lo più senza problemi tranne che in una sezione della dashboard, dove presentava alcuni problemi con gli aggiornamenti o le installazioni. Quando ho provato a installare un tema, mi ha dato l'errore "Installazione fallita: Download fallito. Nessun trasporto funzionante trovato".
Fortunatamente, ho risolto il problema con la seguente soluzione.
Si è scoperto che questo messaggio di errore si verifica quando mancano delle estensioni sul server di sviluppo, quindi WordPress non è in grado di effettuare richieste HTTP esterne.
La soluzione è abbastanza semplice. Le estensioni mancanti che consentono queste richieste HTTP sono già installate con Wamp Server, ma per impostazione predefinita sono disabilitate. Per abilitarle, dobbiamo modificare il file di configurazione php.ini.
Modifica del file php.ini
Il file php.ini contiene un elenco di molte estensioni, alcune delle quali disabilitate di default. L'unica che ho dovuto abilitare era l'estensione openssl.
Ecco i passaggi per abilitare questa estensione:
- Avvia Wamp Server.
- Clicca sull'icona di Wamp Server e vai su PHP->php.ini.
- Fai doppio clic su php.ini per aprirlo nell'editor di testo predefinito.
- Cerca php_openssl.dll nel file php.ini. ->Vedrai che l'estensione è commentata: ;extension=php_openssl.dll
- Rimuovi il punto e virgola (;) per decommentare la riga.
- Salva le modifiche.
- Riavvia Wamp Server.
Ecco fatto, abbiamo finito!!!

Sul mio server Wamp (PHP 7) l'estensione si chiama semplicemente openssl e non php_openssl. Rimuovendo il commento dalla riga ;extension=openssl
come da tue istruzioni, ho risolto questo problema, grazie!

Stavo ricevendo questo errore perché il mio PHP (php.ini
) non aveva l'estensione "cURL" attivata. Ho semplicemente attivato questa estensione e riavviato il server. Problema risolto.
Nota: questa è una risposta simile a quella di "Ashish Madhavacharya" sopra, ma specificamente risolta attivando l'estensione php_curl.dll
(e non l'estensione openssl, che non dovrebbe avere nulla a che fare con questo errore che stai ricevendo.)

L'API HTTP di WordPress è stata costruita in modo da funzionare sul maggior numero possibile di server, provando diversi metodi (transport) per farlo.
Secondo il messaggio di errore, non ci sono transport funzionanti e quindi WordPress non è in grado di effettuare richieste HTTP in uscita.
Ti consiglio di installare qualcosa come il plugin WordPress Core Control, che ti permette di debuggare tutti i transport HTTP esistenti. È abbastanza probabile che mentre un transport non funziona, un altro possa essere OK. Questo plugin ti permette di disabilitare quello rotto e testare l'API HTTP con il nuovo transport.
Se risulta che infatti nessuno dei transport funziona, dovresti contattare il tuo provider di hosting per installare almeno qualcosa come cURL sul server così da poter effettuare richieste HTTP in PHP.

I consigli su questo messaggio di errore sono piuttosto vari e nessuno sembra fornire una risposta completa (Vedi qualche blog, una risposta duplicata e qui e qui su SO). Spero che questo sia un approccio più formale al problema.
Considero solo WordPress su PHP servito via Apache (non posso commentare su NginX al momento dato che non l'ho provato con PHP, né posso commentare su altri framework). La risposta potrebbe mostrare una leggera inclinazione verso Windows 10 con un Apache 2.4.37 auto-costruito, PHP 7.2 thread safe estratto e WordPress 4.2.X.
Contesto
PHP e cURL spiega, piuttosto bene si potrebbe aggiungere, che sotto il cofano WordPress si affida a Requests
, un wrapper attorno alle librerie cURL
e fSockets
. Requests
preferisce la libreria cURL
se disponibile ma presumibilmente ripiegherà sulla libreria fSockets
per scaricare Plugin/Temi/ecc. L'errore "No transports" indica che nessuna delle due librerie è configurata correttamente all'interno di Apache o PHP. È anche possibile che il proprio firewall interferisca con il processo.
Verifica
Testa la configurazione sia di Apache che di PHP impostando e caricando lo script standard PHPinfo dal tuo browser. Questo dovrebbe avere una sezione separata intitolata cURL
le cui voci mostrano varie informazioni. Altrimenti imposta e carica il seguente script per verificare.
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Abilitato' : 'Disabilitato';
?>
Non so come testare fSockets
.
cURL
Per garantire la disponibilità di cURL
sembra necessario abilitarlo all'interno di php.ini
.
Assicurati che
extension_dir
punti correttamente alla cartella delle estensioniextension_dir="ext"
(In alternativa
extension_dir="D:PATH/TO/php/ext"
è spesso suggerito)Assicurati che l'estensione
cURL
sia abilitataextension=curl
(
extensions=php_curl(.so|.dll)
oextensions="PATH/TO/php_curl(.so|.dll)"
sono anche suggeriti, possibilmente per PHP<7.2)Da PHP sembra che le librerie
eay32
,ssh2
essleay32
debbano essere disponibili anche nel percorso (Con OpenSSL 1.1eay32
è stato rinominatocrypto-*
essleay32
è stato rinominatossl-*
). Su Windows l'hack brutto è copiare queste librerie dalla cartella radice di PHP nella cartellasystem32
owow64
. La soluzione migliore è modificare la variabile di percorso per includere la cartella radice di PHP (Personalmente preferisco un percorso pulito che configuro come richiesto, ma questo è PHP). Su sistemi *nix sembra che sia sufficiente installare il pacchettophp5-curl
per la propria distribuzione.Nota : I commenti sulla pagina PHP suggeriscono che si possono semplicemente aggiungere voci
LoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"
al propriohttpd.conf
macURL
sembra cercare queste librerie nel percorso; rendendo inutile il suggerimento. Le persone di XAmpp/Wamp se la cavano con questo passaggio perché sembrano scaricare la propria radice sul percorso di sistema.
Una volta fatto, riavvia Apache. Se stai usando Apache monitor dovresti effettivamente fermare e poi avviare Apache; questo imposta un nuovo ambiente per il servizio in cui eseguire (risparmiandoti un riavvio).
fSockets
Non so cosa sia necessario per far funzionare questo.

Ho avuto lo stesso problema e le soluzioni sopra indicate non hanno funzionato. Ho trovato una pagina sul forum WAMP dove qualcuno ha risolto aggiornando all'ultima versione di Apache. L'ho provato e ha funzionato anche per me.

Pubblico qui il mio hack per i futuri utenti di Google:
Ho scaricato il file zip del plugin dai rispettivi siti dei fornitori, l'ho inserito in /var/www/html/wp-content/plugins/
, l'ho decompresso e attivato dal pannello di controllo di WordPress.
Sono stato costretto a fare quanto sopra perché, una volta abilitato ;extension=openssl
dal file php.ini
e riavviato il server php, non riusciva a trovare il file openssl.so
nonostante avessi compilato php con il flag --with-openssl
.
