PHP 4, PHP 5, PHP 6. ssl:// & tls:// since PHP 4.3.0 sslv2:// & sslv3:// since PHP 5.0.2
Hinweis: Wird kein Transporter angegeben, so wird tcp:// angenommen.
Internet-Domain-Sockets erwarten zusätzlich zur Zieladresse eine Portnummer. Im Fall von fsockopen() wird diese als zweiter Parameter übergeben und beeinflusst so nicht die Formatierung der Transporter-URL. Bei stream_socket_client() und damit zusammenhängenden Funktionen wird die Portnummer dagegen, wie in URLs üblich, von einem Doppelpunkt getrennt an den URL angehängt.
Hinweis: Numerische IPv6-Adressen mit Portnummern
Während im vorangegangenen Beispiel an die IPv4- und Hostname-Einträge nur der Doppelpunkt und die Portnummer angehängt wurden, ist die IPv6-Adresse in der zweiten Zeile zusätzlich in eckige Klammern gesetzt worden: [fe80::1]. Dies dient dazu, zwischen den Doppelpunkten in der IPv6-Adresse selbst und dem Trennzeichen zwischen Adresse und Portnummer unterscheiden zu können.
Die ssl://- und tls://-Transporter erweitern den tcp://-Transporter um SSL-Verschlüsselung (nur verfügbar, wenn PHP mit OpenSSL-Unterstützung kompiliert wurde). Beginnend mit PHP 4.3.0 kann OpenSSL-Unterstützung statisch in PHP eingebunden werden, ab PHP 5.0.0 wahlweise auch als dynamisch ladbares Modul.
ssl:// versucht je nach Fähigkeiten und Vorlieben des Kommunikationspartners eine SSL-V2- oder -V3-Verbindung herzustellen. sslv2:// und sslv3: erzwingen explizit die Nutzung des SSL-V2-bzw. -V3-Protokolls.
Actually, PHP is very able to start with an unencrypted connection and then switch to an encrypted one - refer to http://php.net/stream_socket_enable_crypto .
I've been having a problem with a TLS connection.
<?php
$fp = fsockopen("tls://mail.example.com", 587, $errno, $errstr);
?>
Which gives me an error of:
SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
I believe this is caused by PHP not being able to start with an unencrypted connection and then switch to encryption even though the functionality is built into OpenSSL.
For Google Mail users you can avoid this by using port 465 instead of 587.