'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?

  • do you have the same error when you install a plugin ?
    – mmm
    Commented Jan 25, 2018 at 11:02

6 Answers 6


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:

  1. Start Wamp Server.
  2. click on Wamp Server Icon and move to PHP->php.ini option.
  3. double click on php.ini. so, it will open php.ini file in your default Text Editor.
  4. search for php_openssl.dll in php.ini file. ->You Will see that the extension is commented out: ;extension=php_openssl.dll
  5. Uncomment that line by removing semi colon(;)
  6. save the changes.
  7. Restart Wamp Server.

That's it We Are Done!!!

  • Thanks, you made my day
    – marcoqf73
    Commented Aug 19, 2020 at 13:27
  • On my Wamp server (PHP 7) the extension is called just openssl not php_openssl. By uncommenting the line ;extension=openssl as per your instructions it solved this isuse for me, thanks!
    – dading84
    Commented Dec 8, 2020 at 17:09
  • This solution worked for me on XAMPP with PHP 7.4 on Windows 10 64-bit. Commented Jan 21, 2022 at 22:04

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.)


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 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 cannot 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 one's 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.

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 extension_dir correctly points to one's extensions folder


    (Alternatively extension_dir="D:PATH/TO/php/ext" is often suggested)

  • Ensure that the cURL extension is enabled


    (extensions=php_curl(.so|.dll) or extensions="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.


Posting my hack here for future Googlers:

I downloaded the plugin zip file from respective vendors' sites, put it in /var/www/html/wp-content/plugins/, unzipped it, and activated it from within WordPress dashboard.

I was compelled to do the above because once I enabled ;extension=openssl from php.ini and restarted the php server, it could not locate the openssl.so although I compiled php --with-openssl flag.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.