In order to use the ssh2.*://$session wrappers,
the $session resource variable must be kept.
The code below will not have the desired effect:
<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
'/home/username/.ssh/id_rsa', 'secret');
$connection_string = "ssh2.sftp://$session/";
unset($session);
$stream = fopen($connection_string . "path/to/file", 'r');
?>
unset() closes the session, because $connection_string does not
hold a reference to the $session variable, just a string cast
derived from it. This also happens when the unset() is implicit
because of leaving scope (like in a function).