我使用ssh2_scp_send()函數通過ssh方式將文件從服務器發送到另一臺服務器。 測試腳本和真正的應用程序在我的Ubuntu工作站,它與遠程服務器之間以及我的Windows PC和我的辦公室的CentOS 5.0 Linux服務器之間運行得很好。 在我的客戶中,ssh2_scp_send()停止,返回false,並且發送的文件被截斷(對於6.5MB,2MB)。發送者和接收者服務器同時使用CentOS 5.5,並且是Vmware Vsphere虛擬機監控程序上的虛擬服務器。兩者之間有一個虛擬的本地網絡。 較小的文件不會被截斷。每臺服務器上有足夠的磁盤空間。ssh2_scp_send()無法將整個文件轉移到一臺服務器上
下面是測試腳本:
<?php
$source = '/sourcefile.dat';
$dest = '/destfile.dat';
$serveur = 'sshserver';
$login = 'login';
$sPub = 'public_key';
$sPriv = 'private_key';
$passphrase = 'pass';
$aSSHMethods = array(
'kex' => 'diffie-hellman-group1-sha1',
'client_to_server' => array(
'crypt' => '3des-cbc,aes256-cbc,aes192-cbc,aes128-cbc',
'comp' => 'none'),
'server_to_client' => array(
'crypt' => '3des-cbc,aes256-cbc,aes192-cbc,aes128-cbc',
'comp' => 'none'),
);
$rSSH = ssh2_connect($serveur, 22, $aSSHMethods);
ssh2_auth_pubkey_file($rSSH, $login, $sPub, $sPriv, $passphrase);
ssh2_scp_send($rSSH, $source, $dest);
我試圖通過一個ssh2_sftp/FOPEN/FWRITE/FCLOSE,但它運行相同的方式來代替ssh2_scp_send(),以及較慢。
我怎麼理解爲什麼轉移掛?目標服務器上的sshd日誌只顯示連接和斷開連接。
感謝
函數ssh2_scp_send()停止一個錯誤狀態,在我的情況下,我只有一個Linux的盒子,但我會嘗試。 – 2011-05-29 15:08:47