FTP 函數透過檔案傳輸協定 (FTP) 提供對遠端檔案伺服器的用戶端存取。支援連線登入、上傳下載、重命名、刪除、目錄操作、權限設定等細粒度控制。若僅需簡單讀寫,建議使用 fopen() 搭配 ftp:// 包裝器。
Windows 版 PHP 內建 FTP 支援;Linux 需編譯時加入 --enable-ftp (PHP 4+) 或 --with-ftp (PHP 3)。
| 函數 | 說明 | PHP 版本 |
|---|---|---|
ftp_connect() | 建立 FTP 連線 | 3 |
ftp_ssl_connect() | 建立 SSL 加密 FTP 連線 | 4 |
ftp_login() | 登入 FTP 伺服器 | 3 |
ftp_close() | 關閉 FTP 連線 | 4 |
ftp_pasv() | 設定被動模式開關 | 3 |
ftp_chdir() | 切換遠端目錄 | 3 |
ftp_cdup() | 切換到父目錄 | 3 |
ftp_pwd() | 取得目前遠端目錄名稱 | 3 |
ftp_mkdir() | 建立遠端目錄 | 3 |
ftp_rmdir() | 刪除遠端目錄 | 3 |
ftp_nlist() | 取得指定目錄檔案列表(簡短) | 3 |
ftp_rawlist() | 取得詳細檔案列表(含權限、大小、時間) | 3 |
ftp_get() | 下載檔案到本地 | 3 |
ftp_fget() | 下載檔案到已開啟的本地檔案指標 | 3 |
ftp_put() | 上傳本地檔案到伺服器 | 3 |
ftp_fput() | 上傳已開啟的本地檔案指標到伺服器 | 3 |
ftp_nb_get() | 非阻塞下載 | 4 |
ftp_nb_put() | 非阻塞上傳 | 4 |
ftp_nb_fget() | 非阻塞下載到檔案指標 | 4 |
ftp_nb_fput() | 非阻塞上傳檔案指標 | 4 |
ftp_nb_continue() | 繼續非阻塞傳輸 | 4 |
ftp_delete() | 刪除遠端檔案 | 3 |
ftp_rename() | 重命名遠端檔案/目錄 | 3 |
ftp_chmod() | 設定遠端檔案權限 | 5 |
ftp_size() | 取得遠端檔案大小 | 3 |
ftp_mdtm() | 取得遠端檔案最後修改時間 | 3 |
ftp_site() | 發送 SITE 指令 | 3 |
ftp_exec() | 在伺服器執行指令 | 4 |
ftp_raw() | 發送原始 FTP 指令 | 5 |
ftp_systype() | 取得伺服器系統類型識別碼 | 3 |
ftp_get_option() | 取得連線執行期選項 | 4 |
ftp_set_option() | 設定連線執行期選項 | 4 |
ftp_alloc() | 為上傳檔案預留空間 | 5 |
ftp_quit() | ftp_close() 別名 | 3 |
| 常數 | 說明 | PHP 版本 |
|---|---|---|
| FTP_ASCII / FTP_TEXT | ASCII 傳輸模式 | 3 |
| FTP_BINARY / FTP_IMAGE | 二進制傳輸模式 | 3 |
| FTP_TIMEOUT_SEC | 逾時秒數選項 | 3 |
| FTP_AUTOSEEK | 自動定位續傳位置 | 4 |
| FTP_AUTORESUME | 自動決定恢復/開始位置 (GET/PUT) | 4 |
| FTP_FAILED | 非同步傳輸失敗 | 4 |
| FTP_FINISHED | 非同步傳輸完成 | 4 |
| FTP_MOREDATA | 非同步傳輸進行中 | 4 |
<?php
$host = 'ftp.example.com';
$user = 'username';
$pass = 'password';
$local_file = 'local.txt';
$remote_file = 'remote.txt';
$conn = ftp_connect($host) or die('無法連線 FTP 伺服器');
ftp_login($conn, $user, $pass) or die('登入失敗');
ftp_pasv($conn, true); // 建議開啟被動模式
// 上傳
if (ftp_put($conn, $remote_file, $local_file, FTP_BINARY)) {
echo "上傳成功\n";
} else {
echo "上傳失敗\n";
}
// 下載
if (ftp_get($conn, $local_file . '.bak', $remote_file, FTP_BINARY)) {
echo "下載成功\n";
} else {
echo "下載失敗\n";
}
ftp_close($conn);
?>
ftp_ssl_connect) 或 SFTP (需 SSH2 擴展) 保障傳輸安全。ftp_nb_*) 避免腳本逾時。ftp_alloc() 預留空間可減少伺服器拒絕風險。ftp_close() 釋放資源。