2013-05-06 261 views
2

我試圖連接到SFTP服務器並通過php上傳文件。將文件上傳到SFTP服務器

我已經安裝了PHP LIB(php_ssh2),但它的失敗在這一點上:

<?php 
$connection = ssh2_connect('shell.example.com', 22); 
ssh2_auth_password($connection, 'username', 'password'); 


$sftp = ssh2_sftp($connection); 

?> 

最後一行返回false和下面的警告顯示在日誌:

Warning: ssh2_sftp(): Unable to startup SFTP subsystem: Unable to request SFTP subsystem 

我不知道它是否與當我嘗試通過命令行使用sftp命令連接到同一服務器時得到的錯誤有關:

sftp error subsystem request failed on channel 0 

我試着更換線上子系統SFTP/usr/lib目錄/ openssh的/我的sshd_config通過內部SFTP像有些人建議的,但它沒有工作(我預計,因爲我認爲這是用於連接SFTP服務器到本地SFTP服務器)

我試着重新安裝openssh的客戶端和OpenSSH服務器(雖然我覺得最後一個人不應該是必須的,因爲服務器是外部主機)。

我試圖用Filezilla登錄到SFTP,一切正常。

而且,我已經試過phpseclib,但它給了一個錯誤的登錄,即使有正確的憑據。

所以,我無法既不PHP也不通過命令行來上傳文件到SFTP服務器。

你有排隊我在這裏失蹤?

編輯:

的phpseclib日誌太長,我在這裏粘貼它(請告訴我如何將其連接的情況下,它是不允許放這種鏈接): http://pastebin.com/Kkw027nR

這是FileZilla的日誌http://pastebin.com/6u90646Q,我注意到,也許問題與這兩條線相關的,但我不知道:

2013-05-07 08:16:15 2704 3 Traza: Opened channel for session 
2013-05-07 08:16:15 2704 3 Traza: Primary command failed; attempting fallback 

謝謝 哈維爾

+1

請分享FileZilla中登錄 – 2013-05-06 12:24:46

+0

此外,共享phpseclib日誌。 PHP的libssh2綁定不會記錄原始SSH數據包,但是phpseclib可以。 – neubert 2013-05-06 20:15:34

+0

我附上了phpseclib日誌。我無法從這裏提供FileZilla,我明天就會提供。順便謝謝你。 – 2013-05-06 21:38:59

回答

2

似乎服務器的配置有問題導致連接嘗試失敗。 無論如何,如果出現故障,FileZilla和Putty(psftp)都可以通過某種後備方式成功連接。

我無法解釋詳細信息,但是在與phpseclib的創建者共享日誌後,他已經能夠在其lib中實現此回退功能,所以現在我可以成功連接到sftp服務器最新版本的phpseclib(https://github.com/phpseclib/phpseclib)。

有關問題的詳細信息,檢查了這一點:http://www.frostjedi.com/phpbb3/viewtopic.php?f=46&t=168285

特別感謝TerraFrost他的耐心和幫助,以獲得解決方案。