Akım soketi ve PHP 5.6'da SSL ile ilgili bir sorunum var. SSL'nin arabelleğe alındığı çıktı görünüyor. Aşağıdaki örnekte "ehlo" komutu dikkate alınmaz (sunucu yanıt vermiyor). Ancak "ehlo" ifadesinden sonra başka bir şey gönderildiğinde ör. fwrite
'a başka bir çağrıda yeni bir hat, sunucu yanıt gönderir.SSL ile Aktarım soketi
$errno = '';
$errstr = '';
$timeout = 5;
$streamContext = stream_context_create();
$host = 'ssl://smtp.some.server.com:465';
$stream = stream_socket_client($host, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
stream_set_blocking($stream, 1);
stream_set_timeout($stream, $timeout);
stream_set_write_buffer($stream, 0);
$fgets = fgets($stream);
print_r($fgets);
fwrite($stream, "ehlo [127.0.0.1]\r\n");
$response = '';
do {
$line = fgets($stream);
$response .= $line;
} while (null !== $line && false !== $line && ' ' != $line{3});
print_r($response);
fclose($stream);
bir yanıt var:
220 epicserver.net.pl ESMTP IdeaSmtpServer v0.80.2 ready.
(ilk print_r
geliyor).
fwrite($stream, "ehlo [127.0.0.1]\r\n");
Ben ek soket yazma ekleyin:
Ben bir PHP SSL sarıcı sorunu olmadığını kontrol etmek Stunnel kullanarak denedim
220 epicserver.net.pl ESMTP IdeaSmtpServer v0.80.2 ready.
250-epicserver.net.pl Hello ip-166-242.pl [94.183.162.232], pleased to meet you
250-PIPELINING
250-ENHANCEDSTATUSCODES
250-SIZE
250-8BITMIME
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 HELP
ve ben değiştirdiğinizde $host
$host = 'localhost:110;'
için: fwrite($stream, "\n");
çıkış ok (stunnel yapılandırmam) her şey mükemmel çalışıyor (bu özel fwrite
yöntemini eklemeden).
Bu problemle karşılaşan kimse var mı?
$fgets = '';
while (is_resource($stream) && !feof($stream)) {
$fgets .= fgets($stream);
}
mesela mu: – VolkerK
Evet, bu test kodu swiftmailer uygulamasından alınmıştır. –
Eğer ssl: //smtp.some.server.com: 465 ile swiftmailer kullanırsanız, el sıkışma tamamlanmadığı için işe yaramıyor mu? – VolkerK