2011-08-29 72 views
1

我發現Apache環境缺少東西 bash必須發出ssh請求。問題是,是否有任何方法可以將某些東西帶入,還是必須從shell運行SSH/SFTP請求?Net :: SFTP在Apache環境中掛起

我使用Net ::: SFTP運行帶有用戶名和密碼的sftp登錄。調試日誌與shell和apache相同。唯一的區別是

一)Apache的一個運行幅度較慢的訂單(不知爲什麼?) b)中最重要的是,它掛在

sftp: Sending SSH2_FXP_INIT 

我試圖盡我可以使環境相似,但不知道要尋找什麼,但尚未達成解決方案。

我正在運行apache 2.2.3,mod_perl 2.0.4,perl 5.8.8,Net :: SFTP 0.10,OpenSSL 0.9.8。沒有有趣的參數發送到Net :: SFTP構造函數,只是調試。

感謝您的幫助!

回答

0

我終於發現這是STDIN的結果,STDOUT綁定到文件句柄對象而不是modperl中的實際文件句柄。這是潛在問題的原因。

指向/ dev/null都修復它。我仍然需要找出一個比/ dev/null更好的解決方案,但是這些知識足以理解相關問題。

0

如果您有某種網絡偵聽程序,我會嘗試並聽取該連接並轉儲您獲得的數據。如果您在握手的某個部分超時,解決方案會有所不同,而Net :: SFTP正在進食而不報告時會出現某種錯誤。我建議使用tcpdump來嘗試發現,因爲我假設你在Linux/BSD系統上。

+0

執行SSH加密握手(在發送SSH2_FXP_INIT很長時間之前完成)後,幾乎沒有希望能夠獲得檢查原始TCP數據的任何有用信息。 – salva

+0

您的回答讓我相信,從apache內部調用SSH沒有任何根本性的錯誤,即不需要shell環境。這只是一個奇怪的僥倖,但事情應該按預期工作。那是對的嗎? – KateYoak