ssh2:// — Secure Shell 2
ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// PHP 4.3.0 and up (PECL)
Note: 锟矫凤拷装锟斤拷默锟斤拷没锟叫硷拷锟斤拷
为锟斤拷使锟斤拷 ssh2.*:// 锟斤拷装协锟介, 锟斤拷锟斤拷氚沧帮拷锟斤拷锟� » PECL 锟斤拷 » SSH2 锟斤拷展锟斤拷
锟斤拷锟斤拷支锟街达拷统锟斤拷 URI 锟斤拷录锟斤拷息锟斤拷ssh2 锟斤拷装协锟斤拷也支锟斤拷通锟斤拷 URL 锟斤拷锟斤拷锟斤拷锟斤拷host锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟矫达拷锟斤拷锟接★拷
Example #1 锟斤拷一锟斤拷锟筋动锟斤拷锟斤拷锟叫达拷锟街斤拷锟斤拷
<?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');
?>
Example #2 This $session variable must be kept available!
In order to use the ssh2.*://$session wrappers you must keep the $session resouce variable. 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).