这个代码有点问题.脚本连接,但它不会给我位于根目录中的文件夹...我错过了什么?
$ftp_server = "ftp.something.com";
$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");
// 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";
}
$contents = ftp_nlist($conn_id, ".");
var_dump($contents);
ftp_close($conn_id);
die;
Run Code Online (Sandbox Code Playgroud)
它输出
Connected as $ftp_user@$ftp_server;
Run Code Online (Sandbox Code Playgroud)
和
boolean false
Run Code Online (Sandbox Code Playgroud)
为什么它不会列出文件?
我可以非常快速地解决这个问题
file_exists("ftp//user:pass@host.com")
Run Code Online (Sandbox Code Playgroud)
......但是容易的部分不是我想要的东西,我什么都不会学到
Til*_*ill 52
ftp_nlist()false发生错误时返回.我猜你需要使用被动传输:
// after ftp_login(...)
ftp_pasv($conn_id, true);
Run Code Online (Sandbox Code Playgroud)
Generell,我建议使用像CLI之类的工具ftp或像Filezilla 这样的GUI客户端对此进行故障排除.日志/输出非常非常有用.
HTH
不要惊慌。它很容易解决。后ftp_login()只使用在下面给出的代码。
ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false); // set ftp option
ftp_pasv($ftp_conn, true); //make connection to passive mode
Run Code Online (Sandbox Code Playgroud)
这段代码解决了我的问题。