Installation fehlgeschlagen: Download fehlgeschlagen. Keine funktionierenden Transporte gefunden

10

'Installation fehlgeschlagen: Download fehlgeschlagen. Keine funktionierenden Transporte gefunden '.

Dieses Fehlerproblem trat auf, als ich versuchte, ein Thema in WordPress zu installieren. Wie löse ich dieses Problem?

mss
quelle
Haben Sie den gleichen Fehler, wenn Sie ein Plugin installieren?
mmm

Antworten:

13

Die WordPress-Site funktionierte größtenteils ohne Probleme, außer in einem Dashboard-Bereich der Site, in dem Probleme beim Aktualisieren oder Installieren auftraten. Beim Versuch, das Thema zu installieren, wurde der Fehler "Installation fehlgeschlagen: Download fehlgeschlagen. Keine funktionierenden Transporte gefunden" angezeigt.

Glücklicherweise habe ich das Problem mit der folgenden Lösung behoben .

Es stellt sich heraus, dass diese Fehlermeldung auftritt, wenn auf einem Entwicklungsserver Erweiterungen fehlen , sodass WordPress keine externen HTTP-Anforderungen stellen kann.

Die Lösung ist ziemlich einfach. Die fehlenden Erweiterungen, die diese HTTP-Anforderungen ermöglichen, sind bereits mit Wamp Server installiert. Standardmäßig sind sie nur deaktiviert. Um sie zu aktivieren, müssen wir die Konfigurationsdatei php.ini bearbeiten.

Bearbeiten der Datei php.ini

Die Datei php.ini enthält eine Liste vieler Erweiterungen, von denen einige standardmäßig deaktiviert sind. Das einzige, was ich aktivieren musste, war die openssl-Erweiterung.

Hier sind die Schritte zum Aktivieren dieser Erweiterung:

  1. Starten Sie Wamp Server.
  2. Klicken Sie auf das Wamp Server-Symbol und wechseln Sie zur Option PHP-> php.ini.
  3. Doppelklicken Sie auf php.ini. Daher wird die Datei php.ini in Ihrem Standard-Texteditor geöffnet.
  4. Suche nach php_openssl.dll in der Datei php.ini. -> Sie werden sehen, dass die Erweiterung auskommentiert ist :; extension = php_openssl.dll
  5. Kommentieren Sie diese Zeile aus, indem Sie das Semikolon entfernen (;)
  6. Speichern Sie die Änderungen.
  7. Starten Sie Wamp Server neu.

Das war's Wir sind fertig !!!

Ashish Madhavacharya
quelle
3

Die WordPress-HTTP-API wurde so erstellt, dass sie auf vielen Servern wie möglich funktioniert und verschiedene Methoden (Transporte) ausprobiert.

Laut der Fehlermeldung gibt es keine funktionierenden Transporte und daher kann WordPress keine ausgehenden HTTP-Anfragen stellen.

Ich würde Ihnen empfehlen, so etwas wie das Core Control WordPress-Plugin zu installieren , mit dem Sie alle vorhandenen HTTP-Transporte debuggen können. Es ist durchaus möglich, dass ein Transport nicht funktioniert, während ein anderer in Ordnung ist. Mit diesem Plugin können Sie das defekte Plugin deaktivieren und die HTTP-API mit dem neuen Transport testen.

Wenn sich herausstellt, dass tatsächlich keiner der Transporte funktioniert, sollten Sie sich an Ihren Hosting-Anbieter wenden, um mindestens so etwas wie cURL auf dem Server zu installieren, damit Sie HTTP-Anforderungen in PHP stellen können.

swissspidy
quelle
0

Die Ratschläge zu dieser Fehlermeldung sind sehr unterschiedlich und niemand scheint eine umfassende Antwort zu geben (siehe einige Blogs , eine doppelte Antwort und hier und hier auf SO). Hoffentlich ist dies eine formellere Sicht auf das Problem.

Ich betrachte nur WordPress auf PHP, das über Apache bereitgestellt wird (ich kann NginX derzeit nicht kommentieren, da ich es nicht mit PHP ausprobiert habe, und ich kann auch keine anderen Frameworks kommentieren). Die Antwort zeigt möglicherweise eine leichte Tendenz zu Windows 10 mit einem selbst erstellten Apache 2.4.37, extrahiertem thread-sicherem PHP 7.2 und WordPress 4.2.X.

Hintergrund

PHP und cURL erklären, ziemlich nett könnte man hinzufügen, dass sich WordPress unter der Haube auf Requestseinen Wrapper um die cURLund fSocketsBibliotheken stützt . Requestsbevorzugt die cURLBibliothek, falls verfügbar, greift aber angeblich auf die fSocketsBibliothek zurück, um Plugins / Themes / etc. herunterzuladen. Der Fehler "Keine Transporte" zeigt an, dass keine der Bibliotheken in Apache oder PHP ordnungsgemäß konfiguriert ist. Es ist auch möglich, dass eine Firewall den Prozess stört.

Prüfen

Testen Sie die Konfiguration von Apache und PHP, indem Sie das Standard- PHPinfo- Skript in Ihrem Browser einrichten und laden . Dies sollte einen separaten Abschnitt mit dem Titel haben, cURLdessen Einträge verschiedene Informationen enthalten. Andernfalls richten Sie das folgende Skript ein und laden Sie es, um es zu überprüfen.

<?php
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
?>

Ich weiß nicht, wie ich testen soll fScokets.

cURL

Um die Verfügbarkeit von zu gewährleisten, cURLscheint es notwendig, es innerhalb zu ermöglichen php.ini.

  • Stellen Sie sicher, dass der extentions_dirOrdner korrekt auf den Erweiterungsordner verweist

    extentions_dir="ext"

    (Alternativ extentions_dir="D:PATH/TO/php/ext"wird oft vorgeschlagen)

  • Stellen Sie sicher, dass die cURLErweiterung aktiviert ist

    extension=curl

    ( extentions=php_curl(.so|.dll)oder extentions="PATH/TO/php_curl(.so|.dll)"werden auch vorgeschlagen, möglicherweise für PHP <7.2)

  • Aus PHP scheint es, dass die eay32, ssh2und ssleay32Bibliotheken auch auf einem Pfad verfügbar sein müssen (mit OpenSSL 1.1 eay32wurde umbenannt crypto-*und ssleay32wurde umbenannt ssl-*). Unter Windows besteht der hässliche Hack darin, diese Bibliotheken aus dem PHP-Stammordner in den Ordner system32oder zu kopieren wow64. Die bessere Lösung besteht darin, die Pfadvariable so zu ändern, dass sie den PHP-Stammordner enthält (ich persönlich bevorzuge einen sauberen Pfad, den ich nach Bedarf konfiguriere, aber dies ist PHP). Auf * nix-Boxen scheint es einfach, das php5-curlPaket für die eigene Distribution zu installieren .

    Hinweis: Die Kommentare auf der PHP- Seite legen nahe, dass man einfach LoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"Einträge zu Einsen hinzufügen kann , httpd.confaber cURLdiese Bibliotheken auf dem eigenen Pfad zu suchen scheint. den Vorschlag diskutieren. Die XAmpp / Wamp-Leute kommen mit diesem Schritt davon, da sie ihren eigenen Stamm auf ihren Systempfad zu werfen scheinen.

Sobald Sie fertig sind, starten Sie Apache neu. Wenn Sie den Apache-Monitor verwenden, sollten Sie Apache tatsächlich stoppen und dann starten. Dadurch wird eine neue Umgebung für die Ausführung des Dienstes eingerichtet (Sie sparen einen Neustart).

fSockets

Ich weiß nicht, was notwendig ist, um dies in Gang zu bringen.

Carel
quelle