Overview
KB
Technical FAQ
PHP Manual
CSS2 Manual
HTML Manual
JS Guide
JS Reference
PhpDock Manual
Nu-Coder Manual
PhpExpress Manual
PHP Joomla
Development
Learn PHP
 
<stream_socket_clientstream_socket_get_name>
^Stream FunctionsLast updated: Mon, 26 Oct 2026

stream_socket_enable_crypto

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

stream_socket_enable_crypto — Turns encryption on/off on an already connected socket

Description

function stream_socket_enable_crypto(
    resource $stream,
    bool $enable,
    ?int $crypto_method = null,
    ?resource $session_stream = null
): int|bool

Enable or disable encryption on the stream.

Once the crypto settings are established, cryptography can be turned on and off dynamically by passing true or false in the enable parameter.

Return Values

Returns true on success, false if negotiation has failed or 0 if there isn't enough data and you should try again (only for non-blocking sockets).

Errors/Exceptions

Throws a ValueError if enable is true, crypto_method is omitted and the stream has no crypto_method SSL context option.

Changelog

Version Description
8.0.0 Now throws a ValueError if crypto_method is needed but not given. Previously, an E_WARNING was raised and false was returned.
8.0.0 session_stream is now nullable.

Examples

Example #1 stream_socket_enable_crypto() example

<?php
$fp = stream_socket_client("tcp://myproto.example.com:31337", $errno, $errstr, 30);
if (!$fp) {
    die("Unable to connect: $errstr ($errno)");
}

/* Turn on encryption for login phase */
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god\r\n");
fwrite($fp, "PASS secret\r\n");

/* Turn off encryption for the rest */
stream_socket_enable_crypto($fp, false);

while ($motd = fgets($fp)) {
    echo $motd;
}

fclose($fp);
?>

The above example will output something similar to:



<stream_socket_clientstream_socket_get_name>
^Stream FunctionsLast updated: Mon, 26 Oct 2026