ftp_nlist返回布尔值true - 不在服务器上工作,在dev上

时间:2012-03-14 00:03:50

标签: php ftp

我写了一些代码来访问FTP服务器并下拉平面文件。它适用于我在WAMP(Windows; 5.3.10)中的开发环境,但在生产服务器(5.3.2 - Linux)上,它在调用ftp_nlist时失败。

它在那里停留约30秒,然后死于编码错误消息[FTP] Unable to retrieve files in the directory

以下是相关代码:

$link = ftp_connect(constant("FTP_SERVER"));
if(!$link)
    die("Unable to open connection to FTP Server: " + constant("FTP_SERVER"));

if(!ftp_login($link,
        constant("FTP_USER"),
        constant("FTP_PASSWORD")))
    die("Unable to login; check username and password.");

if(!ftp_chdir($link,
        constant("FTP_PATH")))
    die("Unable to change to directory: " + constant("FTP_PATH")); 

ftp_pasv($link, true);
clearDownloadDir();  // Delete already downloaded files

/* Get a list of all files */
$files = ftp_nlist($link, '.');
if(!$files)
    die("[FTP] Unable to retrieve files in the directory.");

常量在另一个文件中定义为:

define("FTP_SERVER", "ftp.{server}");
define("FTP_PATH", "./Australia/");
define("FTP_USER", "{user}");
define("FTP_PASSWORD", "{password}");

让我感觉到的是它正在连接(证明它不会在ftp_connect上死亡)并在本地工作。 FTP_NLIST返回布尔值TRUE(1)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

事实证明,此代码运行的共享服务器上的防火墙阻止了FTP进入被动模式。很奇怪。