ssh2:// — 安全外殼協(xié)議 2
ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)
注意: 該封裝器默認(rèn)沒(méi)有激活
為了使用 ssh2.*:// 封裝協(xié)議, 你必須安裝來(lái)自 ? PECL 的 ? SSH2 擴(kuò)展。
除了支持傳統(tǒng)的 URI 登錄信息,ssh2 封裝協(xié)議也支持通過(guò) URL 的主機(jī)(host)部分來(lái)復(fù)用打開(kāi)連接。
示例 #1 從一個(gè)活躍的連接中打開(kāi)流
<?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');
$stream = fopen("ssh2.tunnel://$session/remote.example.com:1234", 'r');
?>
示例 #2 $session 變量必須保持可用!
為了使用 ssh2.*://$session 封裝協(xié)議, 必須保留 $session 資源變量。下面的代碼就不會(huì)有預(yù)期的效果:
<?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() 會(huì)關(guān)閉 session,因?yàn)?$connection_string 不保存對(duì) $session 變量的引用,只是源自它的字符串轉(zhuǎn)換。當(dāng)離開(kāi)(像函數(shù))作用域隱性調(diào)用 unset() 時(shí),也會(huì)發(fā)生這種情況。