【问题标题】:Trying to download file from FTP results in an "500 Illegal PORT command" error尝试从 FTP 下载文件会导致“500 Illegal PORT command”错误
【发布时间】:2012-11-25 00:16:06
【问题描述】:

如果我在本地执行,一切正常:

require 'net/ftp'

ftp=Net::FTP.new("myftpserver.com", "username", "password")

ftp.getbinaryfile("/myfile.zip","localfile.zip")
ftp.close

如果我尝试在我正在使用的 Linux 服务器上执行它,结果是:

/usr/local/lib/ruby/1.9.1/net/ftp.rb:273:in `getresp': 500 Illegal
PORT command. (Net::FTPPermError)   from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:281:in `voidresp'  from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:304:in `block in voidcmd'  from
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'   from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:302:in `voidcmd'   from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:317:in `sendport'  from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:325:in `makeport'  from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:358:in `transfercmd'   from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:420:in `block (2 levels) in
retrbinary'   from /usr/local/lib/ruby/1.9.1/net/ftp.rb:166:in
`with_binary'   from /usr/local/lib/ruby/1.9.1/net/ftp.rb:419:in `block
in retrbinary'  from /usr/local/lib/ruby/1.9.1/monitor.rb:201:in
`mon_synchronize'   from /usr/local/lib/ruby/1.9.1/net/ftp.rb:418:in
`retrbinary'  from /usr/local/lib/ruby/1.9.1/net/ftp.rb:539:in
`getbinaryfile'

可能是什么问题?

【问题讨论】:

  • 可能应该移到 serverfault..

标签: ruby ftp download


【解决方案1】:

我在http://www.ruby-forum.com/topic/161274找到了答案:

在防火墙之外,活动 ftp 无法在 NAT 设备后面工作。 FTP 如果你告诉他们你的服务器有时会说非法端口命令 address 是一个私有 IP 地址,例如 192.168.x(您在 nat设备后面的网络)

添加:

ftp.passive = true

修复它。

【讨论】:

  • +1 ... 我在 Netbeans 远程编辑器中遇到同样的错误,已通过更改为被动模式修复。
  • 我使用了这个 gem "paperclip-storage-ftp",我在上传照片时遇到了 Net::FTPPermError 500 之类的错误。所以你能告诉我应该把这条线ftp.passive = true放在模型中吗?你也可以看到这个stackoverflow.com/questions/33540851/…
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
相关资源
最近更新 更多