2012-12-06 15 views
14

Nếu tôi thực hiện điều này tại địa phương, tất cả mọi thứ hoạt động tốt:Đang cố gắng để tải về tập tin từ kết quả FTP trong một thông báo lỗi "500 bất hợp pháp lệnh PORT"

require 'net/ftp' 

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

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

Nếu tôi cố gắng để thực hiện nó trên máy chủ Linux Tôi đang sử dụng, kết quả là:

/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' 

Điều gì có thể là vấn đề?

+1

có thể sẽ được chuyển đến serverfault .. –

Trả lời

34

Tôi tìm thấy câu trả lời ở http://www.ruby-forum.com/topic/161274:

Vượt tường lửa, ftp hoạt động sẽ không hoạt động đằng sau một thiết bị NAT. Ftp máy chủ đôi khi nói lệnh cảng bất hợp pháp nếu bạn nói với họ rằng địa chỉ của bạn là một địa chỉ tin ip như 192.168.x (địa chỉ của bạn trên mạng đằng sau thiết bị nat)

Thêm:

ftp.passive = true 

sửa nó.

+1

+1 ... Tôi gặp lỗi tương tự trong Netbeans Remote Editor, Cố định bằng cách thay đổi sang chế độ thụ động. –

+0

tôi đã sử dụng đá quý này "paperclip-storage-ftp" và tôi nhận được lỗi như Net :: FTPPermError 500 trong khi tải ảnh lên. vì vậy bạn có thể cho tôi biết nơi tôi nên đặt dòng này ftp.passive = true trong mô hình? bạn cũng có thể thấy điều này quá http://stackoverflow.com/questions/33540851/getting-random-error-while-upload-photo-with-paperclip-on-my-ftp-server –