ssh2.*://$session ラッパーを使うには、
リソース変数 $session をキープしておかないといけません。
次のコードは、期待通りには動きません。
<?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() のところでセッションを閉じてしまいます。
なぜなら、$connection_string が持つのが $session
への参照ではなく、単にそれを文字列にキャストしたものだからです。
これは、unset() が暗黙のうちに呼ばれた場合にも起こりえます
(関数などの) スコープを抜けるときに発生する可能性があります。