FTP
- 简介
- 安装/配置
- 预定义常量
- 范例
- FTP 函数
- ftp_alloc — 为要上传的文件分配空间
- ftp_append — 将文件内容追加到 FTP 服务器上的指定文件
- ftp_cdup — 切换到当前目录的父目录
- ftp_chdir — 在 FTP 服务器上改变当前目录
- ftp_chmod — 设置 FTP 服务器上的文件权限
- ftp_close — 关闭一个 FTP 连接
- ftp_connect — 建立一个新的 FTP 连接
- ftp_delete — 删除 FTP 服务器上的一个文件
- ftp_exec — 在 FTP 服务器运行指定的命令
- ftp_fget — 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
- ftp_fput — 上传一个已经打开的文件到 FTP 服务器
- ftp_get_option — 返回当前 FTP 连接的各种不同的选项设置
- ftp_get — 从 FTP 服务器上下载一个文件
- ftp_login — 登录 FTP 服务器
- ftp_mdtm — 返回指定文件的最后修改时间
- ftp_mkdir — 建立新目录
- ftp_mlsd — 返回指定目录中的文件列表
- ftp_nb_continue — 连续获取/发送文件(以不分块的方式 non-blocking)
- ftp_nb_fget — 从 FTP 服务器获取文件并写入到一个打开的文件(非阻塞)
- ftp_nb_fput — 将文件存储到 FTP 服务器 (非阻塞)
- ftp_nb_get — 从 FTP 服务器上获取文件并写入本地文件(non-blocking)
- ftp_nb_put — 存储一个文件至 FTP 服务器(non-blocking)
- ftp_nlist — 返回给定目录的文件列表
- ftp_pasv — 返回当前 FTP 被动模式是否打开
- ftp_put — 上传文件到 FTP 服务器
- ftp_pwd — 返回当前目录名
- ftp_quit — ftp_close 的 别名
- ftp_raw — 向 FTP 服务器发送命令
- ftp_rawlist — 返回指定目录下文件的详细列表
- ftp_rename — 更改 FTP 服务器上的文件或目录名
- ftp_rmdir — 删除目录
- ftp_set_option — 设置各种 FTP 运行时选项
- ftp_site — 向服务器发送 SITE 命令
- ftp_size — 返回指定文件的大小
- ftp_ssl_connect — 打开 SSL-FTP 连接
- ftp_systype — 返回远程 FTP 服务器的操作系统类型

User Contributed Notes 5 notes
tendrid at gmail dot com ¶
10 years ago
For those who dont want to deal with handling the connection once created, here is a simple class that allows you to call any ftp function as if it were an extended method. It automatically puts the ftp connection into the first argument slot (as all ftp functions require).
This code is php 5.3+
<?php
class ftp{
public $conn;
public function __construct($url){
$this->conn = ftp_connect($url);
}
public function __call($func,$a){
if(strstr($func,'ftp_') !== false && function_exists($func)){
array_unshift($a,$this->conn);
return call_user_func_array($func,$a);
}else{
// replace with your own error handler.
die("$func is not a valid FTP function");
}
}
}
// Example
$ftp = new ftp('ftp.example.com');
$ftp->ftp_login('username','password');
var_dump($ftp->ftp_nlist());
?>
asifkhandk at gmail dot com ¶
9 years ago
Upload file to server via ftp.
<?php
$ftp_server="";
$ftp_user_name="";
$ftp_user_pass="";
$file = "";//tobe uploaded
$remote_file = "";
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
exit;
} else {
echo "There was a problem while uploading $file\n";
exit;
}
// close the connection
ftp_close($conn_id);
?>
rob at signalfire dot co dot uk ¶
8 years ago
In example 2 above you may need to set the system to to use pasv to get a result ie:
$ftp = new ftp('ftp.example.com');
$ftp->ftp_login('username','password');
$ftp->ftp_pasv(TRUE);
var_dump($ftp->ftp_nlist());
mser at netweave dot com ¶
7 years ago
syntax error in the above example, ftp_nlist requires a directory parameter:
$ftp->ftp_nlist('.'); // retrieve contents of current directory
boris dot hocde at gmail dot com ¶
8 years ago
Think about using the ftp:// wrapper for simple manipulations (getting or storing a single file).
<?php
$content = file_get_contents('ftp://login:password@server/directory/file.txt');
copy('local_file.txt', 'ftp://login:password@server/directory/new_file.txt');
?>
Same kind of mistake: using cURL to get the content of a public URL...