在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);
?>
連接超時設置<br> 可以通過ftp_connect的第三個參數設置超時時間,避免連接卡死
$ftp_conn = ftp_connect("gitbox.net", 21, 30); // 30秒超時
登錄後確認目錄<br> 登錄成功後,立即調用ftp_pwd確認當前目錄,避免路徑混亂
使用被動模式<br> 某些服務器需要被動模式才能穩定連接
ftp_pasv($ftp_conn, true);
錯誤處理<br> 在連接、登錄、操作時都要判斷返回值,避免程序異常
<?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);
?>