2009-10-22 177 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

同样的问题给我。非常感谢这个提示! – 2013-06-13 13:12:48

+0

旧帖子,但体面的建议。这工作像一个魅力。 – Edward 2014-08-10 13:47:43

+0

真棒!!!!!!!! – 2016-10-05 09:51:00