php脚本在Windows主机上不列出ftp文件(ftp_rawlist问题)


php script on Windows hosting does not list ftp files (ftp_rawlist issues)

我试图在Windows共享主机上使用php-FTP函数列出来自外部FTP服务器的一些文件,但我遇到了一些问题。

我首先尝试了几个web应用程序,如ajaxplorer和net2ftp,但我很沮丧,我决定制作一个非常基本的测试脚本。。

<?php   
$ftp_server = "alinuxftpserver";
$ftp_user = "user";
$ftp_pass = "pass";
// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
// change temp folder (windows)
putenv("TMP=D://inetpub//webs//domain//net2ftp//tmp");
echo getenv('TMP'); 
// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{
    echo "Connected as $ftp_user@$ftp_server'n";
} 
else 
{
    echo "Couldn't connect as $ftp_user@$ftp_server'n";
}
if(ftp_pasv( $conn_id, true )) 
      echo "Passive mode, it worked<br/>"; 
    else 
      echo "Passive mode, it didn't work<br/>";
$contents = ftp_rawlist($conn_id, ".");
var_dump($contents);
ftp_close($conn_id);  
die;
?>

在我的localhost(linux)上,它返回一个数组,而在托管的windows上,它则返回:

Warning: ftp_rawlist() [function.ftp-rawlist]: php_connect_nonb() failed: No such file or directory (2) in D:'inetpub'webs'domain'ftp.php on line 26
bool(false)

无法理解。。外部ftp服务器上的目录应该是"/",当然还有一些文件&文件夹(2个文件夹和1个文件)。。事实上,在我的MAMP安装上,它运行得很好。

主机管理员告诉我服务器配置还可以。

使用ftp_pasv($conn_id,true);一些ftp连接只能在被动模式下工作

我不能100%确定,但我想,您应该使用$contents = ftp_rawlist($conn_id, "/"); 而不是$contents = ftp_rawlist($conn_id, ".");

检查FTP服务器日志。在我的案例中,pasv_address被设置为错误的IP地址。

迟做总比不做好。。。我也有同样的问题。对于Linux服务器,一切都很好,但对于Windows server(许多版本),我们遇到了许多问题,包括ftp_nlist()返回空数组。这对我们有用,但我不知道为什么!

ftp_nlist($handler, '*');