'L'installation a échoué: le téléchargement a échoué. Aucun transport de travail trouvé '.
Ce désordre d'erreur est survenu lorsque j'ai essayé d'installer un thème dans WordPress. Comment résoudre ce problème?
Le site WordPress fonctionnait généralement 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 theme, cela m'a donné l'erreur "L'installation a échoué: le téléchargement a échoué. Aucun transport en cours d'utilisation n'a été trouvé".
Heureusement, j'ai résolu le problème en suivant solution .
Il s'avère que ce message d'erreur se produit lorsqu'il y a extensions manquantes sur un serveur de développement, de sorte que WordPress n'est pas en mesure de faire des demandes HTTP externes.
La solution est assez simple. Les extensions manquantes rendant 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 éditer le fichier de configuration php.ini.
Éditer le fichier php.ini
Le fichier php.ini contient une liste de nombreuses extensions, certaines étant désactivées par défaut. Le seul que je devais activer était l'extension openssl.
Voici les étapes pour activer cette extension:
C'est ça, nous sommes faits !!!
L'API WordPress HTTP a été conçue de manière à fonctionner sur un maximum de serveurs, en utilisant différentes méthodes (transports).
Selon le message d'erreur, il n'y a pas de transport fonctionnel et donc WordPress n'est pas en mesure de faire de requête HTTP sortante.
Je vous recommande d'installer quelque chose comme le plugin Core Control WordPress, qui vous permet de déboguer tous les transports HTTP existants. Il est tout à fait possible qu'un système de transport ne fonctionne pas, un autre puisse être OK. Ce plugin vous permet de désactiver celui qui est cassé et de tester l’API HTTP avec le nouveau transport.
S'il s'avère en effet qu'aucun des transports ne fonctionne, vous devez contacter votre fournisseur d'hébergement pour au moins installer quelque chose tel que cURL sur le serveur afin que vous puissiez 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 quelques blogs , une réponse dupliquée et ici et ici sur SO). Espérons que ceci est une approche plus formelle du problème.
Je considère uniquement WordPress sur PHP servi via Apache (je ne peux pas commenter sur NginX pour le moment car je ne l'ai pas essayé avec PHP, pas plus que je ne peux commenter sur d'autres frameworks). La réponse peut présenter un léger biais vis-à-vis de Windows 10 avec un Apache 2.4.37 auto-construit, un thread safe extrait PHP 7.2 et WordPress 4.2.X.
PHP et cURL explique, pourrait-on dire, que sous le capot, WordPress s’appuie sur Requests
, un wrapper autour des bibliothèques cURL
et fSockets
. Requests
préfère la bibliothèque cURL
si disponible, mais est supposé revenir à la bibliothèque fSockets
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 pour la configuration et le chargement du script standard PHPinfo depuis votre navigateur. Cela devrait avoir une section séparée intitulée cURL
dont les entrées montrent diverses informations. Sinon, configurez et chargez le script suivant à vérifier.
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
?>
Je ne sais pas comment tester fScokets
.
Pour assurer la disponibilité de cURL
, il semble nécessaire de l'activer dans php.ini
.
Assurez-vous que le extentions_dir
pointe correctement vers le dossier d'extensions
extentions_dir="ext"
(Sinon, extentions_dir="D:PATH/TO/php/ext"
est souvent suggéré)
Assurez-vous que l'extension cURL
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)
De PHP , il semble que les bibliothèques eay32
, ssh2
et ssleay32
doivent également être disponibles sur un chemin (avec OpenSSL 1.1, eay32
a été renommé crypto-*
et ssleay32
a été renommé ssl-*
). Sous Windows, le vilain hack consiste à copier ces bibliothèques du dossier racine PHP dans le dossier system32
ou wow64
. La meilleure solution consiste à modifier une variable de chemin pour inclure le dossier racine PHP (Personnellement, je préfère un chemin propre que je configure selon les besoins, mais il s'agit de PHP). Sur les boîtes * nix, il semble simplement qu'il soit simplement nécessaire d'installer le paquet php5-curl
pour la distribution.
Note: Les commentaires sur la page PHP suggèrent que l’on peut simplement ajouter des entrées LoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"
à un httpd.conf
mais cURL
semble rechercher ces bibliothèques sur leur chemin; faire de la suggestion. Les utilisateurs de XAmpp/Wamp s'en sortent avec cette étape, car ils semblent jeter leur propre racine sur leur chemin système.
Une fois cela fait, redémarrez Apache. Si vous utilisez le moniteur Apache, vous devez réellement arrêter puis démarrer Apache. ceci configure un nouvel environnement pour que le service s'exécute (en vous enregistrant un redémarrage).
Je ne sais pas ce qui est nécessaire pour que cela se passe.