我试图在Windows共享主机上使用php ftp函数列出来自外部FTP服务器的一些文件,但我遇到了一些问题。
我首先尝试使用ajaxplorer和net2ftp等几个Web应用程序,但我感到沮丧,我决定制作一个非常基本的测试脚本..
<?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服务器上的“/”,当然还有一些文件&amp;文件夹(2个文件夹和1个文件)..事实上,在我的MAMP安装中,它运行良好。
主持人告诉我服务器配置没问题。
答案 0 :(得分:3)
使用ftp_pasv($ conn_id,true);一些ftp连接只能在被动模式下工作
答案 1 :(得分:0)
我不是百分百肯定,但我想,您应该使用$contents = ftp_rawlist($conn_id, "/");
代替$contents = ftp_rawlist($conn_id, ".");
答案 2 :(得分:0)
检查您的FTP服务器日志。就我而言,pasv_address设置为错误的IP地址。
答案 3 :(得分:0)
迟到总比没有...我遇到了同样的问题。使用Linux服务器一切都很好,但是对于Windows Server(许多版本),我们遇到了很多问题,包括使用ftp_nlist()返回一个空数组。这对我们有用,但我不知道为什么!
ftp_nlist($handler, '*');