Comment puis-je utiliser le SSL dans fsockopen?

Je suis en cours d'exécution PHP 5.2.6 sur Windows, j'ai extension=php_curl.dll et extension=php_openssl.dll décommenté dans php.ini; en tant que tel, je peux voir la suite dans phpinfo:

curl
cURL support        enabled
cURL Information    libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3

openssl
OpenSSL support     enabled
OpenSSL Version     OpenSSL 0.9.8g 19 Oct 2007

Je ne suis pas sûr que le fait d'avoir cURL est activé est vital pour cela, mais depuis qu'il a mentionné OpenSSL j'ai pensé que je pourrais l'inclure ici de toute façon pour l'exhaustivité.


Ce que je veux faire est simple: faire une requête POST vers un autre serveur via le protocole SSL à l'aide de fsockopen.
Mon code jusqu'à présent est: est-ce

$host = 'www.redacted.com';
$data = 'user=redacted&pass=redacted&action=redacted';
$response = "";

if ( $fp = fsockopen("ssl:{$host}", 443, $errno, $errstr, 30) ) {

    $msg  = 'POST /wsAPI.php HTTP/1.1' . "\r\n";
    $msg .= 'Content-Type: application/x-www-form-urlencoded' . "\r\n";
    $msg .= 'Content-Length: ' . strlen($data) . "\r\n";
    $msg .= 'Host: ' . $host . "\r\n";
    $msg .= 'Connection: close' . "\r\n\r\n";
    $msg .= $data;
    if ( fwrite($fp, $msg) ) {
        while ( !feof($fp) ) {
            $response .= fgets($fp, 1024);
        }
    }
    fclose($fp);

} else {
    $response = false;
}

Cela fonctionne bien sûr, si je viens de passer en $host et utiliser le port 80. Mais j'ai vraiment besoin d'envoyer ce sur SSL, et maintenant ça ne fonctionne pas. $response obtient mis à false$errno reste à 0et $errstr obtient mis à php_network_getaddresses: getaddrinfo failed: No such host is known.. Je sais que ce n'est pas un problème du serveur vers le bas, ou une faute de frappe dans le nom d'hôte, etc., parce qu'il fonctionne si je vais sur le port 80 unsecurely. Les problèmes ne démarre que lorsque j'essaie de passer en SSL.

Que dois-je faire pour obtenir ce travail?

source d'informationauteur SoaperGEM