'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?
'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?
Antworten:
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:
Das war's Wir sind fertig !!!
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.
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.
PHP und cURL erklären, ziemlich nett könnte man hinzufügen, dass sich WordPress unter der Haube auf Requests
einen Wrapper um die cURL
und fSockets
Bibliotheken stützt . Requests
bevorzugt die cURL
Bibliothek, falls verfügbar, greift aber angeblich auf die fSockets
Bibliothek 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.
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, cURL
dessen 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
.
Um die Verfügbarkeit von zu gewährleisten, cURL
scheint es notwendig, es innerhalb zu ermöglichen php.ini
.
Stellen Sie sicher, dass der extentions_dir
Ordner korrekt auf den Erweiterungsordner verweist
extentions_dir="ext"
(Alternativ extentions_dir="D:PATH/TO/php/ext"
wird oft vorgeschlagen)
Stellen Sie sicher, dass die cURL
Erweiterung 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
, ssh2
und ssleay32
Bibliotheken auch auf einem Pfad verfügbar sein müssen (mit OpenSSL 1.1 eay32
wurde umbenannt crypto-*
und ssleay32
wurde umbenannt ssl-*
). Unter Windows besteht der hässliche Hack darin, diese Bibliotheken aus dem PHP-Stammordner in den Ordner system32
oder 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-curl
Paket 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.conf
aber cURL
diese 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).
Ich weiß nicht, was notwendig ist, um dies in Gang zu bringen.