Instalarea a eșuat: Descărcarea a eșuat. Nu s-au găsit transporturi funcționale
'Installation failed: Download failed. No working transports found'.
Această eroare a apărut când am încercat să instalez o temă în WordPress. Cum pot rezolva această problemă?

Site-ul WordPress funcționa aproape fără probleme, cu excepția unei secțiuni din panoul de administrare unde avea dificultăți la actualizări sau instalări. Când am încercat să instalez o temă, am primit eroarea "Instalarea a eșuat: Descărcarea a eșuat. Nu s-au găsit transporturi funcționale".
Din fericire, am rezolvat problema cu următoarea soluție.
Se pare că acest mesaj de eroare apare când lipsesc anumite extensii pe un server de dezvoltare, astfel încât WordPress nu poate face cereri HTTP externe.
Soluția este destul de simplă. Extensiile lipsă care permit aceste cereri HTTP sunt deja instalate cu Wamp Server, dar în mod implicit sunt dezactivate. Pentru a le activa, trebuie să edităm fișierul de configurare php.ini.
Editarea fișierului php.ini
Fișierul php.ini conține o listă cu multe extensii, unele dintre ele fiind dezactivate implicit. Singura pe care a trebuit să o activez a fost extensia openssl.
Pașii pentru activarea acestei extensii sunt următorii:
- Porniți Wamp Server.
- Dați clic pe pictograma Wamp Server și accesați opțiunea PHP->php.ini.
- Dați dublu clic pe php.ini pentru a deschide fișierul în editorul de text implicit.
- Căutați php_openssl.dll în fișierul php.ini. ->Veți observa că extensia este comentată: ;extension=php_openssl.dll
- Decomentați linia prin eliminarea punctului și virgulei (;).
- Salvați modificările.
- Reporniți Wamp Server.
Gata! Am rezolvat problema!

Pe serverul meu Wamp (PHP 7) extensia se numește doar openssl, nu php_openssl. Prin decomentarea liniei ;extension=openssl
conform instrucțiunilor tale, am rezolvat această problemă, mulțumesc!

Am primit această eroare deoarece PHP (php.ini
) nu avea extensia "cURL" activată. Am activat pur și simplu această extensie și am repornit serverul. Problema a fost rezolvată.
Notă: acesta este un răspuns similar cu cel al lui "Ashish Madhavacharya" de mai sus, dar problema a fost rezolvată specific prin activarea extensiei php_curl.dll
(și nu extensia openssl, care nu ar trebui să aibă nicio legătură cu această eroare pe care o întâmpinați.)

API-ul HTTP WordPress a fost construit într-un mod care să funcționeze pe cât mai multe servere, încercând diferite metode (transporturi) pentru a realiza acest lucru.
Conform mesajului de eroare, nu există transporturi funcționale și astfel WordPress nu poate face nicio solicitare HTTP spre exterior.
Vă recomand să instalați un plugin precum Core Control pentru WordPress, care vă permite să depanați toate transporturile HTTP existente. Este posibil ca, în timp ce un transport nu funcționează, altul să fie în regulă. Acest plugin vă permite să dezactivați cel defect și să testați API-ul HTTP cu noul transport.
Dacă se dovedește că niciunul dintre transporturi nu funcționează, ar trebui să contactați furnizorul de hosting pentru a instala cel puțin cURL pe server, astfel încât să puteți face solicitări HTTP în PHP.

Sfaturile referitoare la acest mesaj de eroare sunt destul de variate și nimeni nu pare să ofere un răspuns cuprinzător (Vezi un blog, un răspuns duplicat și aici și aici pe SO). Sperăm că aceasta este o abordare mai formală a problemei.
Consider doar WordPress pe PHP servit prin Apache (nu pot comenta despre NginX în acest moment, deoarece nu l-am încercat cu PHP, nici nu pot comenta despre alte framework-uri). Răspunsul poate prezenta o ușoară înclinare către Windows 10 cu un Apache 2.4.37 construit manual, PHP 7.2 thread safe extras și WordPress 4.2.X.
Context
PHP și cURL explică, destul de frumos, că în fundal WordPress se bazează pe Requests
, un wrapper în jurul bibliotecilor cURL
și fSockets
. Requests
preferă biblioteca cURL
dacă este disponibilă, dar se va reveni la biblioteca fSockets
pentru a descărca Plugin-uri/Teme/etc. Eroarea "No transports" indică faptul că niciuna dintre biblioteci nu este configurată corect în Apache sau PHP. De asemenea, este posibil ca firewall-ul să interfereze cu procesul.
Verificare
Testați configurația atât a Apache cât și a PHP setând și încărcând scriptul standard PHPinfo din browser. Acesta ar trebui să aibă o secțiune separată intitulată cURL
ale cărei intrări afișează diverse informații. Altfel, setați și încărcați următorul script pentru a verifica.
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Activat' : 'Dezactivat';
?>
Nu știu cum să testez fScokets
.
cURL
Pentru a asigura disponibilitatea cURL
, se pare necesar să o activați în php.ini
.
Asigurați-vă că
extension_dir
indică corect către folderul extensiilorextension_dir="ext"
(Alternativ,
extension_dir="D:CALE/SPRE/php/ext"
este adesea sugerat)Asigurați-vă că extensia
cURL
este activatăextension=curl
(
extensions=php_curl(.so|.dll)
sauextensions="CALE/SPRE/php_curl(.so|.dll)"
sunt de asemenea sugerate, posibil pentru PHP<7.2)Din PHP se pare că bibliotecile
eay32
,ssh2
șissleay32
trebuie să fie disponibile în calea sistemului (Cu OpenSSL 1.1eay32
a fost redenumit încrypto-*
șissleay32
a fost redenumit înssl-*
). Pe Windows, soluția neelegantă este copierea acestor biblioteci din folderul rădăcină PHP în folderulsystem32
sauwow64
. Soluția mai bună este modificarea variabilei de mediu PATH pentru a include folderul rădăcină PHP (Personal prefer un PATH curat pe care îl configurez după nevoie, dar acesta este PHP). Pe sisteme *nix, se pare că este suficient să instalați pachetulphp5-curl
pentru distribuția dvs.Notă : Comentariile de pe pagina PHP sugerează că puteți adăuga intrări
LoadFile "CALE/SPRE/lib(eay32|ssh2)|ssleay32.dll"
înhttpd.conf
, darcURL
pare să caute aceste biblioteci în PATH; ceea ce face sugestia inutilă. Oamenii de la XAmpp/Wamp scapă de acest pas deoarece par să adauge folderul lor rădăcină în PATH-ul sistemului.
După ce ați terminat, reporniți Apache. Dacă utilizați Apache Monitor, ar trebui să opriți și apoi să porniți Apache; acest lucru configurează un mediu nou pentru serviciu (evitându-vă un restart).
fSockets
Nu știu ce este necesar pentru a face acest lucru să funcționeze.

Am avut aceeași problemă și soluțiile de mai sus nu au funcționat. Am găsit o pagină pe forumul WAMP unde cineva a rezolvat-o prin actualizarea la cea mai recentă versiune de Apache. Am încercat și a funcționat și pentru mine.

Postez soluția mea aici pentru viitorii utilizatori care caută pe Google:
Am descărcat fișierul zip al pluginului de pe site-urile furnizorilor respectivi, l-am pus în /var/www/html/wp-content/plugins/
, l-am dezarhivat și l-am activat din panoul de control WordPress.
Am fost nevoit să fac asta pentru că după ce am activat ;extension=openssl
din php.ini
și am repornit serverul PHP, acesta nu a putut găsi openssl.so
chiar dacă am compilat PHP cu flag-ul --with-openssl
.
