Réponses:
Le site WordPress fonctionnait principalement sans problème, sauf dans une section de tableau de bord du site, où il rencontrait des problèmes de mise à jour ou d'installation. Lorsque j'ai essayé d'installer le thème, il m'a donné l'erreur "Échec de l'installation: Échec du téléchargement. Aucun transport fonctionnel trouvé".
Heureusement, j'ai résolu le problème avec la solution suivante .
Il s'avère que ce message d'erreur se produit lorsqu'il manque des extensions sur un serveur de développement, de sorte que WordPress ne peut pas effectuer de requêtes HTTP externes.
La solution est assez simple. Les extensions manquantes qui rendent ces requêtes HTTP possibles sont déjà installées avec Wamp Server, Par défaut, elles sont simplement désactivées. Pour les activer, nous devons modifier le fichier de configuration php.ini.
Modification du fichier php.ini
Le fichier php.ini contient une liste de nombreuses extensions dont certaines sont désactivées par défaut. Le seul que j'ai dû activer était l' extension openssl.
Voici les étapes pour activer cette extension:
Voilà c'est fini !!!
L'API WordPress HTTP a été conçue de manière à fonctionner sur de nombreux serveurs autant que possible, en essayant différentes manières (transports) de le faire.
Selon le message d'erreur, aucun transport ne fonctionne et WordPress n'est donc pas en mesure d'effectuer de requêtes HTTP sortantes.
Je vous recommande d'installer quelque chose comme le plugin Word Control de Core Control , qui vous permet de déboguer tous les transports HTTP existants. Il est tout à fait possible que pendant qu'un transport ne fonctionne pas, un autre soit OK. Ce plugin vous permet de désactiver celui cassé et de tester l'API HTTP avec le nouveau transport.
S'il s'avère qu'en effet aucun des transports ne fonctionne, vous devez contacter votre hébergeur pour au moins installer quelque chose comme cURL sur le serveur afin de pouvoir faire des requêtes HTTP en PHP.
Les conseils sur ce message d'erreur sont assez variés et personne ne semble fournir une réponse complète (voir un blog , une réponse en double et ici et ici sur SO). Espérons que ce soit une approche plus formelle du problème.
Je ne considère que WordPress sur PHP servi via Apache (je ne peux pas commenter NginX pour le moment car je ne l'ai pas essayé avec PHP, ni commenter d'autres frameworks). La réponse peut présenter un léger biais vers Windows 10 avec un Apache 2.4.37 auto-construit, un thread sécurisé PHP 7.2 et WordPress 4.2.X.
PHP et cURL expliquent, plutôt gentiment, pourrait-on ajouter, que sous le capot, WordPress s'appuie sur Requests
un wrapper autour des bibliothèques cURL
et fSockets
. Requests
préfère la cURL
bibliothèque si elle est disponible mais sera censée revenir à la fSockets
bibliothèque pour télécharger des plugins / thèmes / etc. L'erreur "Aucun transport" indique qu'aucune des bibliothèques n'est correctement configurée dans Apache ou PHP. Il est également possible que le pare-feu interfère également avec le processus.
Testez la configuration d'Apache et de PHP en configurant et en chargeant le script PHPinfo standard à partir de votre navigateur. Cela devrait avoir une section distincte intitulée cURL
dont les entrées affichent diverses informations. Sinon, configurez et chargez le script suivant pour vérifier.
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
?>
Je ne sais pas comment tester fScokets
.
Pour garantir la disponibilité de, il cURL
semble nécessaire de l'activer à l'intérieur php.ini
.
Assurez-vous que le extentions_dir
dossier pointe correctement vers le dossier des extensions
extentions_dir="ext"
(Alternativement extentions_dir="D:PATH/TO/php/ext"
est souvent suggéré)
Assurez-vous que l' cURL
extension est activée
extension=curl
( extentions=php_curl(.so|.dll)
ou extentions="PATH/TO/php_curl(.so|.dll)"
sont également suggérés, éventuellement pour PHP <7.2)
Depuis PHP, il semble que les bibliothèques eay32
, ssh2
et ssleay32
doivent également être disponibles sur leur chemin (avec OpenSSL 1.1 a eay32
été renommé crypto-*
et a ssleay32
été renommé ssl-*
). Sur Windows, le hack laid consiste à copier ces bibliothèques du dossier racine PHP dans le dossier system32
ou wow64
. La meilleure solution est de modifier sa variable de chemin pour inclure le dossier racine PHP (Personnellement, je préfère un chemin propre que je configure comme requis mais c'est PHP). Sur les boîtes * nix, il semble qu'il suffit d'installer le php5-curl
package pour la distribution.
Remarque: Les commentaires sur la page PHP suggèrent que l'on peut simplement ajouter des LoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"
entrées à celles-ci httpd.conf
mais cURL
semble rechercher ces bibliothèques sur leur chemin; discutant de la suggestion. Les gens XAmpp / Wamp s'en sortent avec cette étape car ils semblent vider leur propre racine sur leur chemin système.
Une fois terminé, redémarrez Apache. Si vous utilisez le moniteur Apache, vous devez réellement arrêter puis démarrer Apache; cela met en place un nouvel environnement pour que le service s'exécute (vous permettant de redémarrer).
Je ne sais pas ce qui est nécessaire pour faire avancer les choses.