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:
Starten Sie Wamp Server.
Klicken Sie auf das Wamp Server-Symbol und wechseln Sie zur Option PHP-> php.ini.
Doppelklicken Sie auf php.ini. Daher wird die Datei php.ini in Ihrem Standard-Texteditor geöffnet.
Suche nach php_openssl.dll in der Datei php.ini. -> Sie werden sehen, dass die Erweiterung auskommentiert ist :; extension = php_openssl.dll
Kommentieren Sie diese Zeile aus, indem Sie das Semikolon entfernen (;)
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.
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.
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.
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 !!!
quelle
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.
quelle
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
Requests
einen Wrapper um diecURL
undfSockets
Bibliotheken stützt .Requests
bevorzugt diecURL
Bibliothek, falls verfügbar, greift aber angeblich auf diefSockets
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.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,
cURL
dessen Einträge verschiedene Informationen enthalten. Andernfalls richten Sie das folgende Skript ein und laden Sie es, um es zu überprüfen.Ich weiß nicht, wie ich testen soll
fScokets
.cURL
Um die Verfügbarkeit von zu gewährleisten,
cURL
scheint es notwendig, es innerhalb zu ermöglichenphp.ini
.Stellen Sie sicher, dass der
extentions_dir
Ordner korrekt auf den Erweiterungsordner verweistextentions_dir="ext"
(Alternativ
extentions_dir="D:PATH/TO/php/ext"
wird oft vorgeschlagen)Stellen Sie sicher, dass die
cURL
Erweiterung aktiviert istextension=curl
(
extentions=php_curl(.so|.dll)
oderextentions="PATH/TO/php_curl(.so|.dll)"
werden auch vorgeschlagen, möglicherweise für PHP <7.2)Aus PHP scheint es, dass die
eay32
,ssh2
undssleay32
Bibliotheken auch auf einem Pfad verfügbar sein müssen (mit OpenSSL 1.1eay32
wurde umbenanntcrypto-*
undssleay32
wurde umbenanntssl-*
). Unter Windows besteht der hässliche Hack darin, diese Bibliotheken aus dem PHP-Stammordner in den Ordnersystem32
oder zu kopierenwow64
. 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, dasphp5-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
abercURL
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).
fSockets
Ich weiß nicht, was notwendig ist, um dies in Gang zu bringen.
quelle