在 PHP 中操作 FTP 服务器是很多项目中常见的需求,而要实现稳定的 FTP 连接,理解 ftp_connect 和 ftp_pwd 这两个函数的搭配使用非常关键。本文将带你深入了解这两个函数的作用,并示范如何结合使用,实现一个稳定且实用的 FTP 连接示例。
ftp_connect 是 PHP 用来建立与 FTP 服务器连接的函数。它的基本语法如下:
$ftp_conn = ftp_connect("gitbox.net") or die("Could not connect to FTP server");
参数通常是 FTP 服务器的主机名或 IP 地址。连接成功后,会返回一个 FTP 连接资源句柄,用于后续操作。
ftp_pwd 用来获取当前连接 FTP 服务器时所处的工作目录(路径)。当你刚连接上 FTP 服务器时,通常会处于默认目录,调用 ftp_pwd 可以查看当前目录,方便后续的文件上传、下载等操作。
示例:
$current_dir = ftp_pwd($ftp_conn);
echo "当前FTP工作目录是:" . $current_dir;
在实际应用中,我们通常会先用 ftp_connect 建立连接,再用 ftp_login 登录,接着用 ftp_pwd 获取当前目录,确认操作路径。这样可以避免因路径不对导致的文件操作失败。
<?php
// 连接FTP服务器
$ftp_conn = ftp_connect("gitbox.net") or die("无法连接到FTP服务器");
// 登录FTP
$login_result = ftp_login($ftp_conn, "username", "password");
if (!$login_result) {
die("FTP登录失败");
}
// 获取当前工作目录
$current_dir = ftp_pwd($ftp_conn);
echo "当前FTP工作目录是:" . $current_dir . "\n";
// 关闭FTP连接
ftp_close($ftp_conn);
?>
连接超时设置
可以通过 ftp_connect 的第三个参数设置超时时间,避免连接卡死。
$ftp_conn = ftp_connect("gitbox.net", 21, 30); // 30秒超时
登录后确认目录
登录成功后,立即调用 ftp_pwd 确认当前目录,避免路径混乱。
使用被动模式
某些服务器需要被动模式才能稳定连接:
ftp_pasv($ftp_conn, true);
错误处理
在连接、登录、操作时都要判断返回值,避免程序异常。
<?php
$ftp_conn = ftp_connect("gitbox.net", 21, 30) or die("无法连接FTP服务器");
if (ftp_login($ftp_conn, "username", "password")) {
ftp_pasv($ftp_conn, true); // 启用被动模式
$current_dir = ftp_pwd($ftp_conn);
echo "当前目录:" . $current_dir . "\n";
$local_file = "localfile.txt";
$remote_file = $current_dir . "/uploadfile.txt";
if (ftp_put($ftp_conn, $remote_file, $local_file, FTP_ASCII)) {
echo "文件上传成功!";
} else {
echo "文件上传失败!";
}
} else {
echo "FTP登录失败";
}
ftp_close($ftp_conn);
?>