我写了一些代码来访问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)。有什么想法吗?
答案 0 :(得分:1)
事实证明,此代码运行的共享服务器上的防火墙阻止了FTP进入被动模式。很奇怪。