2009-10-22 2 views
16

Я использую следующий код ↓ для подключения к ftp-серверу и получения списка файлов. Он работает нормально на моей локальной машине (Fedora 11), но не на производстве (работает Ubuntu), где метод ftp_nlist возвращает false.Команда ftp_nlist не работает

$ftpInfo = array('directory' => 'somewebsite.com', 
       'user' => 'someuser', 
       'password' => 'somepass', 
       'port' => 21, 
       'timeout' => 30); 
$connectionId = ftp_connect($ftpInfo['directory'], 
          $ftpInfo['port'], 
          $ftpInfo['timeout']); 

$loginResult = ftp_login($connectionId, $ftpInfo['user'], $ftpInfo['password']); 

$files = ftp_nlist($connectionId, '.'); 

var_dump($files); 
ftp_close($connectionId); 

Возвращает массив файлов на моей машине и false при производстве.

Что делает это особенно раздражающим, так это то, что в обоих случаях ему удается подключиться и войти в систему и успешно.

var_dump($loginResult); 

возвращает

bool(true) 

ответ

42

Оказывается, это было связано с конфигурацией брандмауэра сервера. Перешел в пассивный режим после входа в систему, и он работал нормально.

ftp_pasv($connectionId, true); 
+2

Такая же проблема для меня. Большое спасибо за этот совет! –

+0

Старый пост, но достойный совет. Это работало как прелесть. – Edward

+0

awesome !!!!!!!! –