Composer and Wamp – Unable to find the socket transport “ssl”

Just a quick post after something regarding wamp I completely forgot about.

I was using composer to install a fresh copy of Silverstripe 3, which worked fine until I tried to use composer to search packagist for related packages:

[code]composer search silverstripe[/code]

The console came back with the following error:

[code]
The “http://packagist.org/search.json?q=silverstripe” file could not be downloaded: failed to open stream: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?
[/code]

Using the wamp tray icon, I had enabled openssl under php extensions, and ssl under apache modules. My phpinfo was showing ssl under Registered Stream Socket Transports. So what was the problem?

Googling the error specific to wamp netted very little, until I came across a post that reminded me that wamp, by default, has two php.ini files. One located in /bin/php/[version]/, and another located in /bin/apache/[version]/bin. Apache (e.g. using php through a browser) uses the former ini file. Which is why I saw no problem in my phpinfo.

Depending on how your PATH is set on Windows, php-cli uses the latter ini file. On manually checking this file, I found that openssl was not enabled. And enabling it allowed the above composer command to work fine.

Note to self – Work out a unified php.ini usage so I only have to rely on one configuration.