2014-09-09 5 views
0

В настоящее время я нахожусь на mac, когда я использую клиент командной строки для подключения к ftp-серверу, он работает, и я вижу две папки Arkiv и Saxo, я вижу то же самое, если я иду в браузере.Почему я вижу эти различия между функциями php ftp и функциональностью ftp, найденными у других клиентов?

В drupal У меня есть крюк cron, где я использую функции php ftp. Я, конечно, используя те же имя пользователя, пароль, как в двух других случаях здесь приведен пример кода

 if (@ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) { 

     $listing = ftp_rawlist($conn_id, "."); 
     watchdog('ftp root current directory', ftp_pwd($conn_id),array(), WATCHDOG_WARNING); 
     watchdog('ftp root directory listing', print_r($listing,true),array(), WATCHDOG_WARNING); 
     watchdog('ftp root try to change directory',$dir,array(), WATCHDOG_WARNING); 

     $filecount = 0; 
     if (ftp_chdir($conn_id, $dir)) { 
      $contents = ftp_rawlist($conn_id, "."); 
      watchdog('inside contents', print_r($contents,true), array(), WATCHDOG_WARNING); 
      watchdog('inside contents and current folder', ftp_pwd($conn_id), array(), WATCHDOG_WARNING); 
... 
}} 

переменная $ реж установлено, что имя одного из этих папок я ожидал увидеть - в этом случае «Arkiv», и эта папка содержит несколько сотен файлов, когда я смотрю в командной строке или в браузере.

Сообщения, которые я получаю назад от этого процесса являются:

inside contents and current folder 09/09/2014 - 15:19 /Arkiv Anonymous (not verified)  
inside contents 09/09/2014 - 15:19  Anonymous (not verified)  

ftp root try to change directory 09/09/2014 - 15:18 Arkiv Anonymous (not verified)  
ftp root directory listing 09/09/2014 - 15:18  Anonymous (not verified)  
ftp root current directory 09/09/2014 - 15:18/ Anonymous (not verified) 

Я, кажется, не быть в состоянии получить любую информацию назад, когда я пытаюсь получить список содержимого каталога. Я пробовал как rawlist, так и nlist, и ни один из них не возвращает мне никакого контента, как в корневой директории, где у меня должны быть два подкаталога Arkiv и Saxo, а также в самих подкаталогах, где есть несколько сотен файлов (подтверждено командой строка и браузер).

Кроме того, если выход из $ listing = ftp_rawlist ($ conn_id, "."); пусто, как это может быть, что, когда я

if (ftp_chdir($conn_id, $dir)) { .. } 

, что она позволяет мне через и

ftp_pwd($conn_id) 

говорит мне, что я нахожусь в папке «/ Arkiv»?

ответ

0

Разница вызвана тем, что внутри виртуальной машины с NAT и различными брандмауэрами в этой ситуации должен использоваться ftp_pasv http://php.net/manual/en/function.ftp-pasv.php, который я, к сожалению, вызывал перед входом в систему, когда документация указывает, что она должна быть вызвана после логин.

 Смежные вопросы

  • Нет связанных вопросов^_^