2011-08-29 41 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