'Installation failed: Download failed. No working transports found'.
This error mess came up when I tried to install a theme in WordPress. How do I solve this problem?
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It only takes a minute to sign up.
Sign up to join this community'Installation failed: Download failed. No working transports found'.
This error mess came up when I tried to install a theme in WordPress. How do I solve this problem?
The WordPress site was mostly working without a problem except in a dashboard section of the site, where it was having some issues with updating or installing. When I tried to install theme,it gave me error "Installation failed: Download failed. No working transports found".
Fortunately, i fixed the problem with following solution.
It turns out, this error message occurs when there are missing extensions on a development server, so the WordPress is unable to make external HTTP requests.
The solution is pretty simple. The missing extensions that make those HTTP requests possible are already installed with Wamp Server, By default,they are just disabled. To enable them, we need to edit the php.ini configuration file.
Editing php.ini file
The php.ini file contains a list of many extensions with some of them disabled by default. The only one I had to enable was the openssl extension.
Here are the steps to enable that extension:
That's it We Are Done!!!
;extension=openssl
as per your instructions it solved this isuse for me, thanks!
– dading84
Dec 8 '20 at 17:09
The WordPress HTTP API has been built in such a way that it works on many servers as possible, trying out different ways (transports) to do so.
According to the error message, there are no working transports and thus WordPress is not able to make any outgoing HTTP requests.
I'd recommend you to install something like the Core Control WordPress plugin, which allows you to debug all the existing HTTP transports. It's quite possible that while one transport is not working, another might be OK. This plugin allows you to disable the broken one and test the HTTP API with the new transport.
If it turns out that indeed none of the transports are working, you should contact your hosting provider to at least install something like cURL on the server so you can make HTTP requests in PHP.
I was getting this error because my PHP (php.ini
) did not have the "cURL" extension activated. I simply activated this extension and restarted the server. Solved.
Note: this is a similar answer to "Ashish Madhavacharya" above, but specifically solved by activating the php_curl.dll
extension (and not the openssl extension, which should have nothing to do with this error you're receiving.)
I had the same problem and the fixes above did not help. I found a page on the WAMP forum where someone fixed it by upgrading to the latest Apache. I tried this and it worked for me.
The advice on this error message is quite varied and no one seems to provide a comprehensive answer (See some blog, a duplicitous answer and here and here on SO). Hopefully this is a more formal take on the problem.
I consider only WordPress on PHP served via Apache (I can not comment on NginX at this time as I haven't tried it with PHP, nor can I comment upon other frameworks). The answer may exhibit a mild bias towards Windows 10 with a self built Apache 2.4.37, extracted thread safe PHP 7.2 and WordPress 4.2.X.
PHP and cURL explains, rather nicely one might add, that under the hood WordPress relies upon Requests
, a wrapper around the cURL
and fSockets
libraries. Requests
prefers the cURL
library if available but will supposedly fall back to the fSockets
library to download Plugins/Themes/etc. The "No transports" error is indicative that neither library is properly configured within either Apache or PHP. It is also possible ones firewall is interfering with the process too.
Test the configuration of both Apache and PHP setting up and loading the standard PHPinfo script from your browser. This should have a separate section entitled cURL
whose entries show various information. Otherwise setup and load the following script to check.
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
?>
I do not know how to test fScokets
.
To ensure the availability of cURL
is seems necessary to enable it within php.ini
.
Ensure that the extentions_dir
correctly points to ones extensions folder
extentions_dir="ext"
(Alternatively extentions_dir="D:PATH/TO/php/ext"
is often suggested)
Ensure that the cURL
extention is enabled
extension=curl
(extentions=php_curl(.so|.dll)
or extentions="PATH/TO/php_curl(.so|.dll)"
are also suggested, possibly for PHP<7.2)
From PHP it seems that the eay32
, ssh2
and ssleay32
libraries must also be available upon ones path (With OpenSSL 1.1 eay32
was renamed crypto-*
and ssleay32
was renamed ssl-*
). Upon windows the ugly hack is to copy these libraries from the PHP root folder into the system32
or wow64
folder. The better solution is to modify ones path variable to include the PHP root folder (Personally I prefer a clean path that I configure as required but this is PHP). On *nix boxes it seems one simply needs to install the php5-curl
package for ones distro.
Note : The comments on the PHP page suggest that one may simply add LoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"
entries to ones httpd.conf
but cURL
seems to search for these libraries upon ones path; mooting the suggestion. The XAmpp/Wamp people get away with this step as they seem to dump their own root on ones system path.
Once done restart Apache. If you're using Apache monitor you should actually stop and then start Apache; this sets up a new environment for the service to run in (Saving you a restart).
I do not know what is necessary to get this going.