我使用以下代码↓连接到ftp服务器并获取文件列表.它可以在我的本地机器(Fedora 11)上运行,但不能在生产(运行Ubuntu)上运行,其中ftp_nlist方法返回false.
$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);
Run Code Online (Sandbox Code Playgroud)
返回我机器上的文件数组,生产时返回false.
是什么让这特别恼人的是,在这两种情况下,它都设法连接并登录并成功.
var_dump($loginResult);
Run Code Online (Sandbox Code Playgroud)
回报
bool(true)
Run Code Online (Sandbox Code Playgroud)
vis*_*ise 42
事实证明这与服务器的防火墙配置有关.登录后切换到被动模式并且工作正常.
ftp_pasv($connectionId, true);
Run Code Online (Sandbox Code Playgroud)