формирование запроса к ftp

  • Автор темы Автор темы Billy
  • Дата начала Дата начала

Billy

Guest
формирование запроса к ftp

Вот отрывок:

Код:
 if ($fp = @fsockopen(server.com, 21, $errno, $errstr, 30)) {
      fputs($fp, "USER login\r\n"); 
      fputs($fp, "PASS pass\r\n"); 
      fputs($fp, "SYST\r\n"); 
      fputs($fp, "PWD\r\n"); 
      fputs($fp, "TYPE I\r\n");      
      fputs($fp, "PASV\r\n");
      fputs($fp, "REST 0\r\n"); 
      fputs($fp, "RETR /file.zip\r\n\r\n");

while (!feof($fp)) {
$file .= fread($fp,1000);
        }
}
Далее юзается переменная $file...

Что неправильно в запросе?
 
Это экзаменационный вопрос?
Лично я на память тонкости протокола FTP как-то не помню.

а чем не устраивает [m]ftp[/m]?
 
Я использую только запрос выше, но файл не качается, что в зпросе неправильно?
 
прочиталось, как "запрос свыше" :-)
мне кажется,что в запросе все правильно.
но я специалист в пхп, а не в фтп.
 
Billy, может пассив моде нужен? А вообще - советую просто подслушать кого-нибудь и сделать аналогично. Хотя конечно [m]ftp[/m] использовать проще. И вообще - PHP FAQ: Ничего не работает! Что делать??? + RFC по FTP - в любом случае, FTP хоть что-то да должен был сказать.
 
КАК ИСПОЛЬЗОВАТЬ PASSIVE в данном запросе
Вот, я о чем
 
объясни мне зачем работатать через сокеты, если есть очень удобные механизмы по работе с FTP, ссылку выше дал Фанат

а запрос правильный - у меня тоже была беда с сокетами и фтп, с php.net/ftp все проходит
 
Я знаю достоинства ftp функций.
Но, для меня подходит только мой вариант, просто объясните, как пассив вставить.
 
Billy, что такое телнет, ты, конечно же, ттоже не знаешь?
 
Billy, давно бы всё подслушал...
Код:
1 2004.09.25 13:28:31:0162 4857| -------- CONNECTING (plugin: Apr 17 2003, 18:25:41) --------
1 2004.09.25 13:28:31:0583 0421|<-220 ProFTPD 1.2.9 Server (server.com) [server.com]
1 2004.09.25 13:28:31:0603 0020|->USER username
1 2004.09.25 13:28:31:0793 0190|<-331 Password required for username.
1 2004.09.25 13:28:31:0793 0000|->PASS *hidden*
1 2004.09.25 13:28:31:0994 0201|<-230 User username logged in.
1 2004.09.25 13:28:32:0004 0010|->SYST
1 2004.09.25 13:28:32:0184 0180|<-215 UNIX Type: L8
1 2004.09.25 13:28:32:0194 0010|->PWD
1 2004.09.25 13:28:32:0384 0190|<-257 "/" is current directory.
1 2004.09.25 13:28:32:0384 0000|->REST 0
1 2004.09.25 13:28:32:0574 0190|<-350 Restarting at 0. Send STORE or RETRIEVE to initiate transfer
1 2004.09.25 13:28:32:0605 0031|->PASV
1 2004.09.25 13:28:32:0795 0190|<-227 Entering Passive Mode.
1 2004.09.25 13:28:33:0005 0210|->LIST -la
1 2004.09.25 13:28:33:0205 0200|<-150 Opening ASCII mode data connection for file list
1 2004.09.25 13:28:33:0396 0191|<-226 Transfer complete.
1 2004.09.25 13:28:34:0627 1231|->TYPE I
1 2004.09.25 13:28:34:0828 0201|<-200 Type set to I
1 2004.09.25 13:28:34:0828 0000|->PASV
1 2004.09.25 13:28:35:0018 0190|<-227 Entering Passive Mode.
1 2004.09.25 13:28:35:0248 0230|->RETR filename.ext
1 2004.09.25 13:28:35:0459 0211|<-150 Opening BINARY mode data connection for filename.ext
1 2004.09.25 13:28:35:0689 0230|<-226 Transfer complete.
 
Дык у меня он вписан и не дает результата:

fputs($fp, "TYPE I\r\n");
fputs($fp, "PASV\r\n");
fputs($fp, "REST 0\r\n");
fputs($fp, "RETR /file.zip\r\n\r\n");
 
PASV перед RETR'ом должен быть - и потом - не даёт результата - не описание проблемы - иди и читай ссылку, там сказано, как задавать вопросы.
 
Сверху