2009-10-22 7 views
16

J'utilise le code suivant ↓ pour me connecter à un serveur FTP et obtenir une liste de fichiers. Cela fonctionne bien sur ma machine locale (Fedora 11) mais pas sur la production (exécutant Ubuntu) où la méthode ftp_nlist renvoie false.La commande ftp_nlist ne fonctionne pas

$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); 

Renvoie un tableau de fichiers sur ma machine et false en production.

Ce qui rend cela particulièrement ennuyeux est que dans les deux cas, il parvient à se connecter et se connecter avec succès.

var_dump($loginResult); 

retours

bool(true) 

Répondre

42

Transforme c'était lié à la configuration du pare-feu du serveur. Passé en mode passif après la connexion et cela a fonctionné correctement.

ftp_pasv($connectionId, true); 
+2

Même problème pour moi. Merci beaucoup pour cette astuce! –

+0

Ancien poste mais avis décent. Cela a fonctionné comme un charme. – Edward

+0

génial !!!!!!!! –