How to enable HTTPS stream wrappers How to enable HTTPS stream wrappers php php

How to enable HTTPS stream wrappers


1: Check which wrappers are installed.

<?php var_dump(stream_get_wrappers()); ?>

2: If you dont see "https" on the list, add to/uncomment from php.ini

extension=php_openssl.dll

Restart your server*, and your done.

*if server fails to restart go download php_openssl.dll from someplace and stick it in your extensions directory defined in the php.ini file, restart server, say a few hell mary's and pray.


The file_get_contents line, at the end of your script, is trying to send an HTTPS request -- see the URL in $req, which starts by 'https://ec2...'.

For this to be possible, PHP needs a "wrapper" to send HTTPS requests -- which doesn't seem to be installed on your system ; which means you cannot send HTTPS requests using the fopen familly of functions.

For more informations about stream wrappers, if you are curious, you can take a look at List of Supported Protocols/Wrappers, and, in your case, HTTP and HTTPS.

You'll either have to install the HTTPs wrapper -- on Windows, I have no idea how to do that, unfortunately...


Or you'll have to use something else that file_get_contents to send your HTTPS request -- I would use the functions provided by the curl extension (Here, too, not sure it will work "out of the box", though :-( ).

For an example, you can take a look at what's proposed on the manual page of curl_exec :

// create a new cURL resource$ch = curl_init();// set URL and other appropriate optionscurl_setopt($ch, CURLOPT_URL, "http://www.example.com/");curl_setopt($ch, CURLOPT_HEADER, 0);// grab URL and pass it to the browsercurl_exec($ch);// close cURL resource, and free up system resourcescurl_close($ch);

Note you'll probably have to set a couple more options, using curl_setopt -- you should go through that page : there are a lot of useful options ;-)


As a sidenote, you are using this line at the beginning of your script :

$creds = parse_ini_file('/etc/aws.conf');

The path /etc/aws.conf feels strange, as you said you are using a Windows system : this looks like the kind of path one would use on an UNIX/Linux system.


Open php.ini. Find this line:

;;;;;;;;;;;;;;;;;;;;;;; Dynamic Extensions ;;;;;;;;;;;;;;;;;;;;;;;; ...;extension=ext/php_oci8.dllextension=ext/php_openssl.dll         ; <---- you want this;extension=ext/php_pdo_firebird.dll; ...

you want to uncomment the extension=ext/php_openssl.dll line. Make sure there is a pho_openssl.dll file in the ext/ directory, relative to your php.ini (or maybe more importantly to the extension_dir variable in the ini).