1

我正在尝试在 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;

?>

在我的本地主机(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 安装中它运行良好。

托管人员告诉我,服务器配置还可以。

4

4 回答 4

3

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

于 2013-03-20T09:26:35.010 回答
0

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

于 2012-01-30T14:39:46.793 回答
0

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

ftp_nlist($handler, '*');
于 2014-09-03T17:35:00.327 回答
0

检查您的 FTP 服务器日志。就我而言,pasv_address 设置为错误的 IP 地址。

于 2012-08-07T10:08:03.260 回答