Windows üzerinde PHP 5.2.6 çalıştırıyorum, php.ini içinde uncommented extension=php_curl.dll
ve extension=php_openssl.dll
var; gibi ben phpinfo
aşağıdaki görebilirsiniz:SSL'yi fsockopen'de nasıl çalışırım?
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
Ben cURL sahip bu hayati önem taşımaktadır etkin, ancak OpenSSL sözü beri ben şeyiyle zaten burada dahil düşündüm emin değilim.
Ne yapmak istiyorum basittir: fsockopen
kullanarak SSL üzerinden başka bir sunucuya bir POST isteğinde.
Kodum şu ana kadar şudur:
$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;
}
Sadece $host
geçmek ve bağlantı noktası 80'i kullanmak Ama gerçekten SSL üzerinden bu göndermek gerekir ve şu anda işe yaramıyor, bu elbette iyi çalışıyor. , $errno
için 0
ve $errstr
ayarlarında php_network_getaddresses: getaddrinfo failed: No such host is known.
olarak ayarlandı. Sunucunun kapatılmasının ya da ana bilgisayar adındaki bir yazım hatası gibi bir sorun olmadığını biliyorum, çünkü 80 numaralı bağlantı noktasını güvensiz bir şekilde geçersem çalışır. Sorunlar sadece SSL'ye geçmeye çalıştığımda başlar.
Bu çalışma için ne yapmalıyım?
Yanıtla ilgisi yok, ancak bunun yerine tls protokolünü kullanmayı düşündünüz mü? TLSv1 esasen SSL'nin dördüncü sürümüdür ve yaygın olarak fiili SSL uygulaması olarak yerini almıştır. – Powerlord