这段代码有一个小问题。脚本连接,但它不会给我的文件夹,位于根目录…我错过了什么?
$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;
输出
Connected as $ftp_user@$ftp_server;
和
boolean false
为什么不列出文件?
我可以用
很快解决这个问题 file_exists("ftp//user:pass@host.com")
…但是简单的部分不是我想要的,我不会学到任何东西
发生错误时,ftp_nlist()
返回false
。我猜你需要使用被动转换:
// after ftp_login(...)
ftp_pasv($conn_id, true);
一般来说,我建议通过使用CLI工具(如ftp
)或gui客户端(如Filezilla)来解决这个问题。日志/输出非常非常有用。
HTH
别慌。这很容易解决。在ftp_login()
之后,只需使用下面给出的代码。
ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false); // set ftp option
ftp_pasv($ftp_conn, true); //make connection to passive mode
我还建议确认一下你是谁,在哪里,以确保权限和你期望的实际结果是真实的(偶尔检查一下是健康的)。
echo shell_exec('whoami')." is who i am </br>";
,当你以用户身份连接时,
echo "Current directory is now: " . ftp_pwd($conn_id) . "</br>";
对我来说,在你的连接上面添加以下内容:
putenv('TMPDIR=/tmp/');