2011-10-16 43 views
6

我使用PHP和SSH2將文件傳輸到遠程服務器。使用ssh2_scp_send()發送的文件在遠程服務器上不完整

我用這個:

$connection = ssh2_connect('shell.example.com', 22); 
ssh2_auth_password($connection, 'username', 'password'); 
ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644); 

但有時在遠程服務器上的文件是不完整的。我假設SSH2不會傳輸EOF或其他東西。

你有什麼想法或解決方案嗎?

+0

是否啓用了錯誤報告?如果有問題,你會看到信息嗎? –

+0

是的。我會看到它。 –

回答

17

問題是您不關閉SSH會話。所以內部緩衝區不會被刷新,文件也不會完全寫入磁盤。

這裏是一個解決辦法 - 只要關閉與會話:

ssh2_exec($connection, 'exit'); 

這將導致刷新所有緩衝區和文件應完全轉移。

希望,這有幫助。

+0

完美!這做了訣竅,現在它完美的工作。謝謝! –

+0

歡迎來到Stack Overflow!完全偏離主題的附註:您的主頁在Chrome 14中有一些奇怪的*Umbrüche* 'Programmierspra​​chen'和'Nebenb-eruflich'。不知道爲什麼,但我想你可能想知道。 @Simon如果這個答案適合你,考慮用複選標記符號標記它。 –

+1

謝謝佩卡,但我必須等5分鐘,然後才能接受它。 :-) –

相關問題