Ref/ftp-Phpdoc专题
ftp_alloc
为要上传的文件分配空间
说明
bool <span
class="methodname">ftp_alloc ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">int $filesize
[,
string
&$result
] )
向远程 FTP 服务器发送 ALLO 命令, 来为要上传的文件分配空间。
Note:
很多 FTP 服务器不支持ALLO 命令。 如果服务器不支持此命令,将会返回错误码(
false
), 返回成功码(true
)表示预分配空间不是必需的, 客户端可以继续操作了。 因此,请仅对需要强制预分配空间服务器使用此函数。
参数
ftp_stream
FTP 连接标示符。
filesize
要分配的空间,以字节为单位。
result
如果提供此参数,那么服务器的响应 会以文本方式设置到 result
中。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_alloc 函数例程
<?php
$file = "/home/user/myfile";
// 连接服务器
$conn_id = ftp_connect('ftp.example.com');
$login_result = ftp_login($conn_id, 'anonymous', '[email protected]');
if (ftp_alloc($conn_id, filesize($file), $result)) {
echo "Space successfully allocated on server. Sending $file.\n";
ftp_put($conn_id, '/incomming/myfile', $file, FTP_BINARY);
} else {
echo "Unable to allocate space on server. Server said: $result\n";
}
ftp_close($conn_id);
?>
参见
- ftp_put
- ftp_fput
ftp_append
Append the contents of a file to another file on the FTP server
说明
bool <span
class="methodname">ftp_append ( <span
class="type">resource $ftp
, <span
class="methodparam">string
$remote_file
, <span
class="type">string $local_file
[, <span
class="methodparam">int $mode
<span
class="initializer"> = FTP_BINARY
] )
Warning
本函数还未编写文档,仅有参数列表。
参数
ftp
remote_file
local_file
mode
返回值
成功时返回 true
, 或者在失败时返回 false
。
ftp_cdup
切换到当前目录的父目录
说明
bool ftp_cdup
( resource
$ftp_stream
)
切换目录至当前目录的父目录 (上级目录)。
参数
ftp_stream
FTP 连接的标识符。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_cdup 例子
<?php
// 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);
// change the current directory to html
ftp_chdir($conn_id, 'html');
echo ftp_pwd($conn_id); // /html
// return to the parent directory
if (ftp_cdup($conn_id)) {
echo "cdup successful\n";
} else {
echo "cdup not successful\n";
}
echo ftp_pwd($conn_id); // /
ftp_close($conn_id);
?>
参见
- ftp_chdir
- ftp_pwd
ftp_chdir
在 FTP 服务器上改变当前目录
说明
bool <span
class="methodname">ftp_chdir ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $directory
)
将当前目录切换为指定的目录。
参数
ftp_stream
FTP 连接的标识符。
directory
目标目录。
返回值
成功时返回 true
, 或者在失败时返回
false
。如果切换目录失败,PHP 还会发出一条警告。
范例
示例 #1 ftp_chdir 例子
<?php
// 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);
// check connection
if ((!$conn_id) || (!$login_result)) {
die("FTP connection has failed !");
}
echo "Current directory: " . ftp_pwd($conn_id) . "\n";
// try to change the directory to somedir
if (ftp_chdir($conn_id, "somedir")) {
echo "Current directory is now: " . ftp_pwd($conn_id) . "\n";
} else {
echo "Couldn't change directory\n";
}
// close the connection
ftp_close($conn_id);
?>
参见
- ftp_cdup
- ftp_pwd
ftp_chmod
设置 FTP 服务器上的文件权限
说明
int ftp_chmod
( resource
$ftp_stream
, <span
class="type">int $mode
, <span
class="type">string $filename
)
将服务器上的文件权限设置为 mode
指定的值。
参数
ftp_stream
FTP 连接标示符。
mode
要设置的权限值, 八进制 值。
filename
远程文件名称。
返回值
操作成功返回文件新的权限,操作失败返回 false
。
范例
示例 #1 ftp_chmod 函数例程
<?php
$file = 'public_html/index.php';
// 建立基础连接
$conn_id = ftp_connect($ftp_server);
// 使用用户名和密码登录
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 尝试设置 $file 的权限为 644
if (ftp_chmod($conn_id, 0644, $file) !== false) {
echo "$file chmoded successfully to 644\n";
} else {
echo "could not chmod $file\n";
}
// 关闭连接
ftp_close($conn_id);
?>
参见
- chmod
ftp_close
关闭一个 FTP 连接
说明
bool <span
class="methodname">ftp_close ( <span
class="type">resource $ftp_stream
)
ftp_close 关闭给出的连接标识符并释放资源。
Note:
调用本函数后,将不能再使用 FTP 连接,必须用 <span class="function">ftp_connect 建立一个新连接。
参数
ftp_stream
FTP 连接的标识符。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_close 例子
<?php
// 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);
// print the current directory
echo ftp_pwd($conn_id); // /
// close this connection
ftp_close($conn_id);
?>
参见
- ftp_connect
ftp_connect
建立一个新的 FTP 连接
说明
resource <span
class="methodname">ftp_connect ( <span
class="type">string $host
[, <span
class="methodparam">int $port
<span
class="initializer"> = 21 [, <span
class="methodparam">int $timeout
<span
class="initializer"> = 90 ]] )
ftp_connect 将会建立一个 FTP
连接到指定的服务器 host
。
参数
host
要连接的服务器地址。此参数后面不应以斜线结尾,前面也不需要用 ftp://
开头。
port
为要连接到的 FTP 器的端口号,如果没有设置或者为 0,则会使用默认的端口 21
来连接。
timeout
用来设置网络传输的超时时间限制。如果此选项留空,则默认的值为 90
秒。超时时间可以在任何时候通过函数 <span
class="function">ftp_set_option 及 <span
class="function">ftp_get_option 来改变和获取。
返回值
如果成功返回一个 FTP 连接资源句柄,发生错误则返回 false
。
范例
示例 #1 ftp_connect 示例
<?php
$ftp_server = "ftp.example.com";
// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
?>
参见
- ftp_close
- ftp_ssl_connect
ftp_delete
删除 FTP 服务器上的一个文件
说明
bool <span
class="methodname">ftp_delete ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $path
)
ftp_delete 函数用来删除 FTP
服务器上的一个由参数 path
指定的的文件。
参数
ftp_stream
FTP 连接的链接标识符。
path
要删除的文件。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_delete 例子
<?php
$file = 'public_html/old.txt';
// 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);
// try to delete $file
if (ftp_delete($conn_id, $file)) {
echo "$file deleted successful\n";
} else {
echo "could not delete $file\n";
}
// close the connection
ftp_close($conn_id);
?>
ftp_exec
在 FTP 服务器运行指定的命令
说明
bool ftp_exec
( resource
$ftp_stream
, <span
class="type">string $command
)
发送一个 SITE EXEC command
请求到 FTP 服务器。
参数
ftp_stream
FTP 连接资源句柄。
command
要执行的命令。
返回值
如果执行成功(服务器发送响应代码 200)则返回 true
;否则返回
false
。
范例
示例 #1 ftp_exec 示例
<?php
// variable initialization
$command = 'ls -al >files.txt';
// 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);
// execute command
if (ftp_exec($conn_id, $command)) {
echo "$command executed successfully\n";
} else {
echo "could not execute $command\n";
}
// close the connection
ftp_close($conn_id);
?>
参见
- ftp_raw
ftp_fget
从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
说明
bool ftp_fget
( resource
$ftp_stream
, <span
class="type">resource $handle
, <span
class="methodparam">string
$remote_file
, <span
class="type">int $mode
[, <span
class="methodparam">int $resumepos
<span
class="initializer"> = 0 ] )
ftp_fget 函数用来下载由 remote_file
指定的文件,并写入到本地已经被打开的一个文件中。
参数
ftp_stream
FTP 连接的链接标识符。
handle
本地已经打开的文件的句柄。
remote_file
远程文件的路径。
mode
传送模式参数, 必须是 (文本模式) FTP_ASCII
或 (二进制模式)
FTP_BINARY
中的一个。
resumepos
远程文件开始下载的位置。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_fget 例子
<?php
// path to remote file
$remote_file = 'somefile.txt';
$local_file = 'localfile.txt';
// open some file to write to
$handle = fopen($local_file, 'w');
// 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);
// try to download $remote_file and save it to $handle
if (ftp_fget($conn_id, $handle, $remote_file, FTP_ASCII, 0)) {
echo "successfully written to $local_file\n";
} else {
echo "There was a problem while downloading $remote_file to $local_file\n";
}
// close the connection and the file handler
ftp_close($conn_id);
fclose($handle);
?>
更新日志
版本 | 说明 |
---|---|
4.3.0 | 增加了resumepos 的支持。 |
参见
- ftp_get
- ftp_nb_get
- ftp_nb_fget
ftp_fput
上传一个已经打开的文件到 FTP 服务器
说明
bool ftp_fput
( resource
$ftp_stream
, <span
class="type">string $remote_file
, <span
class="methodparam">resource $handle
, int $mode
[, int
$startpos
= 0 ] )
ftp_fput 函数用来上传一个在已经打开的文件中的数据到 FTP 服务器。
参数
ftp_stream
FTP 连接的链接标识符。
remote_file
远程文件路径。
handle
打开的本地文件句柄,读取到文件末尾。
mode
传输模式只能为 (文本模式) FTP_ASCII
或 (二进制模式)
FTP_BINARY
其中的一个。
startpos
远程文件上传的开始位置。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_fput 例子
<?php
// open some file for reading
$file = 'somefile.txt';
$fp = fopen($file, 'r');
// 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);
// try to upload $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo "Successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);
?>
更新日志
版本 | 说明 |
---|---|
4.3.0 | 添加了 startpos 的支持。 |
参见
- ftp_put
- ftp_nb_fput
- ftp_nb_put
ftp_get_option
返回当前 FTP 连接的各种不同的选项设置
说明
mixed <span
class="methodname">ftp_get_option ( <span
class="methodparam">resource
$ftp_stream
, <span
class="type">int $option
)
此函数会返回连接句柄为 ftp_stream
,指定键值 option
的值。
参数
ftp_stream
FTP 连接资源句柄。
option
截止到目前,支持的选项有:
FTP_TIMEOUT_SEC |
返回当前设定的网络操作的超时时间。 |
FTP_AUTOSEEK |
此选项打开时返回 true ,否则返回 false 。 |
返回值
如果成功则返回选项的值,否则,如果给定的参数 option
选项不被支持则返回
false
,同时会抛出一条警告(warning)信息。
范例
示例 #1 ftp_get_option 示例
<?php
// Get the timeout of the given FTP stream
$timeout = ftp_get_option($conn_id, FTP_TIMEOUT_SEC);
?>
参见
- ftp_set_option
ftp_get
从 FTP 服务器上下载一个文件
说明
bool ftp_get
( resource
$ftp_stream
, <span
class="type">string $local_file
, <span
class="methodparam">string
$remote_file
, <span
class="type">int $mode
[, <span
class="methodparam">int $resumepos
<span
class="initializer"> = 0 ] )
ftp_get 函数用来下载 FTP 服务器上指定的文件并保存为本地文件。
参数
ftp_stream
FTP 连接的链接标识符。
local_file
文件本地的路径(如果文件已经存在,则会被覆盖)。
remote_file
文件的远程路径。
mode
传送模式。只能为 (文本模式) FTP_ASCII
或 (二进制模式)
FTP_BINARY
中的其中一个。
resumepos
从远程文件的这个位置继续下载。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_get 例子
<?php
// define some variables
$local_file = 'local.zip';
$server_file = 'server.zip';
// 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);
// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Successfully written to $local_file\n";
} else {
echo "There was a problem\n";
}
// close the connection
ftp_close($conn_id);
?>
更新日志
版本 | 说明 |
---|---|
4.3.0 | 增加了 resumepos 。 |
参见
- ftp_pasv
- ftp_fget
- ftp_nb_get
- ftp_nb_fget
ftp_login
登录 FTP 服务器
说明
bool <span
class="methodname">ftp_login ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $username
, string
$password
)
使用用户名和密码登录入给定的 FTP 连接。
参数
ftp_stream
FTP 连接的链接标识符。
username
用户名(USER)。
password
密码(PASS)。
返回值
成功时返回 true
, 或者在失败时返回 false
。 如果登录失败,PHP
会抛出一个警告。
范例
示例 #1 ftp_login 例子
<?php
$ftp_server = "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";
// 设置一个连接或失败时退出
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
// 尝试登录
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\n";
}
// 关闭连接
ftp_close($conn_id);
?>
ftp_mdtm
返回指定文件的最后修改时间
说明
int ftp_mdtm
( resource
$ftp_stream
, <span
class="type">string $remote_file
)
ftp_mdtm 获取远程文件的最后修改时间。
Note:
某些 FTP 服务器可能会不支持这个特性!
Note:
ftp_mdtm 不适用于检查目录。
参数
ftp_stream
FTP 连接句柄。
remote_file
要检查的远程文件。
返回值
返回指定文件的最后修改时间,以 UNIX 时间戳的方式返回。如果发生错误,或文件不存在则返回 -1。
范例
示例 #1 ftp_mdtm 示例
<?php
$file = 'somefile.txt';
// 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);
// get the last modified time
$buff = ftp_mdtm($conn_id, $file);
if ($buff != -1) {
// somefile.txt was last modified on: March 26 2003 14:16:41.
echo "$file was last modified on : " . date("F d Y H:i:s.", $buff);
} else {
echo "Couldn't get mdtime";
}
// close the connection
ftp_close($conn_id);
?>
ftp_mkdir
建立新目录
说明
string <span
class="methodname">ftp_mkdir ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $directory
)
在 FTP 服务器上,创建指定的目录 directory
。
参数
ftp_stream
FTP 连接句柄。
directory
要创建的目录名。
返回值
如果成功返回新建的目录名,发生错误时返回 false
。
范例
示例 #1 ftp_mkdir example
<?php
$dir = 'www';
// 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);
// try to create the directory $dir
if (ftp_mkdir($conn_id, $dir)) {
echo "successfully created $dir\n";
} else {
echo "There was a problem while creating $dir\n";
}
// close the connection
ftp_close($conn_id);
?>
参见
- ftp_rmdir
ftp_mlsd
Returns a list of files in the given directory
说明
array <span
class="methodname">ftp_mlsd ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $directory
)
参数
ftp_stream
The link identifier of the FTP connection.
directory
The directory to be listed.
返回值
Returns an array of arrays with file infos from the specified directory
on success or false
on error.
范例
示例 #1 ftp_mlsd example
<?php
// 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);
// get contents of the current directory
$contents = ftp_mlsd($conn_id, ".");
// output $contents
var_dump($contents);
?>
以上例程的输出类似于:
array(5) {
[0]=>
array(8) {
["name"]=>
string(1) "."
["modify"]=>
string(14) "20171212154511"
["perm"]=>
string(7) "flcdmpe"
["type"]=>
string(4) "cdir"
["unique"]=>
string(11) "811U5740002"
["UNIX.group"]=>
string(2) "33"
["UNIX.mode"]=>
string(4) "0755"
["UNIX.owner"]=>
string(2) "33"
}
[1]=>
array(8) {
["name"]=>
string(2) ".."
["modify"]=>
string(14) "20171212154511"
["perm"]=>
string(7) "flcdmpe"
["type"]=>
string(4) "pdir"
["unique"]=>
string(11) "811U5740002"
["UNIX.group"]=>
string(2) "33"
["UNIX.mode"]=>
string(4) "0755"
["UNIX.owner"]=>
string(2) "33"
}
[2]=>
array(8) {
["name"]=>
string(11) "public_html"
["modify"]=>
string(14) "20171211171525"
["perm"]=>
string(7) "flcdmpe"
["type"]=>
string(3) "dir"
["unique"]=>
string(11) "811U5740525"
["UNIX.group"]=>
string(2) "33"
["UNIX.mode"]=>
string(4) "0755"
["UNIX.owner"]=>
string(2) "33"
}
[3]=>
array(8) {
["name"]=>
string(10) "public_ftp"
["modify"]=>
string(14) "20171211174536"
["perm"]=>
string(7) "flcdmpe"
["type"]=>
string(3) "dir"
["unique"]=>
string(11) "811U57405EE"
["UNIX.group"]=>
string(2) "33"
["UNIX.mode"]=>
string(4) "0755"
["UNIX.owner"]=>
string(2) "33"
}
[4]=>
array(8) {
["name"]=>
string(3) "www"
["modify"]=>
string(14) "www"
["perm"]=>
string(7) "flcdmpe"
["type"]=>
string(3) "dir"
["unique"]=>
string(11) "811U5740780"
["UNIX.group"]=>
string(2) "33"
["UNIX.mode"]=>
string(4) "0755"
["UNIX.owner"]=>
string(2) "33"
}
}
参见
- ftp_rawlist
- ftp_nlist
ftp_nb_continue
连续获取/发送文件(以不分块的方式 non-blocking)
说明
int <span
class="methodname">ftp_nb_continue ( <span
class="methodparam">resource
$ftp_stream
)
以不分块的方式,连续获取/发送文件。
参数
ftp_stream
FTP 连接句柄。
返回值
返回 FTP_FAILED
或 FTP_FINISHED
或 FTP_MOREDATA
.
范例
示例 #1 ftp_nb_continue 示例
<?php
// Initiate the download
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Continue downloading...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "There was an error downloading the file...";
exit(1);
}
?>
ftp_nb_fget
从 FTP 服务器获取文件并写入到一个打开的文件(非阻塞)
说明
int <span
class="methodname">ftp_nb_fget ( <span
class="methodparam">resource
$ftp_stream
, <span
class="type">resource $handle
, <span
class="methodparam">string
$remote_file
[, <span
class="type">int $mode
=
FTP_IMAGE
[, <span
class="type">int $resumepos
=
0 ]] )
ftp_nb_fget 从远程 FTP 服务器获取一个文件
本函数和 ftp_fget 函数的区别是 本函数是异步方式获取文件的, 所以在下载文件的过程中你的程序还可以执行其他操作。
参数
ftp_stream
FTP 连接标示符。
handle
用来存储数据的一个已经打开的文件句柄。
remote_file
远程文件路径。
mode
传输模式,必须是 FTP_ASCII
或者 FTP_BINARY
。
resumepos
远程文件开始下载的位置(即从远程文件的哪个字节开始下载)。
返回值
返回 FTP_FAILED
或 FTP_FINISHED
或 FTP_MOREDATA
。
更新日志
版本 | 说明 |
---|---|
7.3.0 | 参数 mode 变为可选参数。 在之前的版本中,这是一个必填参数。 |
范例
示例 #1 ftp_nb_fget 函数例程
<?php
// 打开要写入的文件
$file = 'index.php';
$fp = fopen($file, 'w');
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 初始化下载
$ret = ftp_nb_fget($conn_id, $fp, $file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// 其他要做的工作
echo ".";
// 继续下载...
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "There was an error downloading the file...";
exit(1);
}
// 关闭文件句柄
fclose($fp);
?>
参见
- ftp_nb_get
- ftp_nb_continue
- ftp_fget
- ftp_get
ftp_nb_fput
将文件存储到 FTP 服务器 (非阻塞)
说明
int <span
class="methodname">ftp_nb_fput ( <span
class="methodparam">resource
$ftp_stream
, <span
class="type">string $remote_file
, <span
class="methodparam">resource $handle
[, int $mode
<span
class="initializer"> = FTP_IMAGE
[, <span
class="methodparam">int $startpos
<span
class="initializer"> = 0 ]] )
ftp_nb_fput 把已打开的文件内容存储到远程 FTP 服务器
本函数和 ftp_fput 函数的区别是 本函数是异步上传文件。 所以在文件上传过程中,你的程序还可以执行其他操作。
参数
ftp_stream
FTP 连接标示符。
remote_file
远程文件路径。
handle
已经打开的本地文件指针,当读取到文件末尾时结束。
mode
传输模式。必须是 FTP_ASCII
或 FTP_BINARY
。
startpos
要将文件存储到远程文件的开始位置(即从远程文件的哪个字节位置开始存储)。
返回值
返回 FTP_FAILED
或 FTP_FINISHED
或 FTP_MOREDATA
。
更新日志
版本 | 说明 |
---|---|
7.3.0 | 参数 mode 变为可选参数。 在之前的版本中,这是一个必填参数。 |
范例
示例 #1 ftp_nb_fput 函数例程
<?php
$file = 'index.php';
$fp = fopen($file, 'r');
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 初始化上传
$ret = ftp_nb_fput($conn_id, $file, $fp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// 任何其他需要做的操作
echo ".";
// 继续上传...
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "There was an error uploading the file...";
exit(1);
}
fclose($fp);
?>
参见
- ftp_nb_put
- ftp_nb_continue
- ftp_put
- ftp_fput
ftp_nb_get
从 FTP 服务器上获取文件并写入本地文件(non-blocking)
说明
int <span
class="methodname">ftp_nb_get ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string
$local_file
, <span
class="type">string $remote_file
[, <span
class="methodparam">int $mode
<span
class="initializer"> = FTP_BINARY
[, <span
class="methodparam">int $resumepos
<span
class="initializer"> = 0 ]] )
ftp_nb_get 在 FTP 服务器上获取指定的远程文件,并保存到本地。
和 ftp_get 不同之处,在于此函数是通过异步的方式来获取文件,这意味着,你的程序可以在下载文件的同时,同步进行其它操作。
参数
ftp_stream
FTP 连接句柄。
local_file
保存到的本地文件路径(如果文件已存在会被覆盖)。
remote_file
远程文件路径。
mode
指定传输模式。必须是 FTP_ASCII
或 FTP_BINARY
。
resumepos
开始下载文件的起始位置。
返回值
返回 FTP_FAILED
或 FTP_FINISHED
或 FTP_MOREDATA
。
更新日志
版本 | 说明 |
---|---|
7.3.0 | mode 参数变为可选,之前是强制性的。 |
范例
示例 #1 ftp_nb_get 示例
<?php
// 初始化
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// 可以同步干其它事
echo ".";
// 继续下载...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "下载文件出错...";
exit(1);
}
?>
示例 #2 通过 ftp_nb_get 恢复下载一个文件
<?php
// 初始化
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
filesize("test"));
// OR: $ret = ftp_nb_get($my_connection, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// 做你爱做的事
echo ".";
// 继续下载Ing...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "下载文件出错...";
exit(1);
}
?>
示例 #3 使用 ftp_nb_get 从指定位置恢复下载文件
<?php
// 禁止 Autoseek
ftp_set_option($my_connection, FTP_AUTOSEEK, false);
// 初始化
$ret = ftp_nb_get($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {
/* ... */
// 继续下载...
$ret = ftp_nb_continue($my_connection);
}
?>
在上面的示例中,newfile
会比 FTP 服务器上的 README
文件小 100
bytes,因为开始下载的时候设置了偏移量为 100。如果我们不禁止
FTP_AUTOSEEK
,则 newfile
文件前面的 100 bytes 会变成 '\0'。
参见
- ftp_nb_fget
- ftp_nb_continue
- ftp_fget
- ftp_get
ftp_nb_put
存储一个文件至 FTP 服务器(non-blocking)
说明
int <span
class="methodname">ftp_nb_put ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string
$remote_file
, <span
class="type">string $local_file
[, <span
class="methodparam">int $mode
<span
class="initializer"> = FTP_BINARY
[, <span
class="methodparam">int $startpos
<span
class="initializer"> = 0 ]] )
ftp_nb_put 函数用来把本地文件
local_file
存储到 FTP 服务器上由 remote_file
参数指定的路径。
与函数 ftp_put 不同的是,此函数上传文件的时候采用的是异步传输模式,也就意味着在文件传送的过程中,你的程序可以继续干其它的事情。
参数
ftp_stream
FTP 连接的链接标识符。
remote_file
远程文件路径。
local_file
本地文件路径。
mode
传输模式选择,可选参数为 FTP_ASCII
(文本模式)或
FTP_BINARY
(二进制模式)。
startpos
指定传输开始的位置,用来续传支持。
返回值
返回 FTP_FAILED
或 FTP_FINISHED
或 FTP_MOREDATA
。
更新日志
版本 | 说明 |
---|---|
7.3.0 | mode 参数为可选,之前版本中为必填。 |
范例
示例 #1 ftp_nb_put 示例
<?php
// 初始化
$ret = ftp_nb_put($my_connection, "test.remote", "test.local", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// 可以同时干其它事
echo ".";
// 继续上传...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "上传过程中发生错误...";
exit(1);
}
?>
示例 #2 使用 ftp_nb_put 来续传文件
<?php
// 初始化
$ret = ftp_nb_put($my_connection, "test.remote", "test.local",
FTP_BINARY, ftp_size("test.remote"));
// 另一种写法: $ret = ftp_nb_put($my_connection, "test.remote", "test.local",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// 可以同时干其它事情
echo ".";
// 继续上传...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "上传过程中发生错误...";
exit(1);
}
?>
参见
- ftp_nb_fput
- ftp_nb_continue
- ftp_put
- ftp_fput
ftp_nlist
返回给定目录的文件列表
说明
array <span
class="methodname">ftp_nlist ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $directory
)
参数
ftp_stream
FTP 连接资源。
directory
指定要列表的目录。本参数接受带参数的形式,例如: ftp_nlist($conn_id,
"-la /you/dir");
注意此参数不对传入值做处理,在目录或者文件名包括空格或特殊的情况下,可能会存在问题。
返回值
如果成功则返回给定目录下的文件名组成的数组,否则返回 false
。
范例
示例 #1 ftp_nlist 例子
<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// check connection
if ((!$conn_id) || (!$login_result)) {
die("FTP connection has failed !");
}
// get contents of the root directory
$contents = ftp_nlist($conn_id, "/");
// output $contents
var_dump($contents);
?>
以上例程的输出类似于:
array(3) {
[0]=>
string(11) "public_html"
[1]=>
string(10) "public_ftp"
[2]=>
string(3) "www"
参见
- ftp_rawlist
- ftp_mlsd
ftp_pasv
返回当前 FTP 被动模式是否打开
说明
bool ftp_pasv
( resource
$ftp_stream
, <span
class="type">bool $pasv
)
在被动模式打开的情况下,数据的传送由客户机启动,而不是由服务器开始。
请注意 ftp_pasv 只能在 FTP 登录成功后方可调用,否则会失败。
参数
ftp_stream
FTP 连接资源。
pasv
如果参数 pasv
为 true
,打开被动模式传输 (PASV MODE)
,否则则关闭被动传输模式。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_pasv 实例
<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';
// 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);
// turn passive mode on
ftp_pasv($conn_id, true);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection
ftp_close($conn_id);
?>
ftp_put
上传文件到 FTP 服务器
说明
bool ftp_put
( resource
$ftp_stream
, <span
class="type">string $remote_file
, <span
class="methodparam">string
$local_file
[, <span
class="type">int $mode
=
FTP_BINARY
[, <span
class="type">int $startpos
=
0 ]] )
ftp_put 函数用来上传指定的本地文件到 FTP 服务器。
参数
ftp_stream
FTP 连接资源。
remote_file
远程文件路径。
local_file
本地文件路径。
mode
传送模式,只能为 FTP_ASCII
(文本模式)或
FTP_BINARY
(二进制模式)。
startpos
指定开始上传的位置,一般用来文件续传。
返回值
成功时返回 true
, 或者在失败时返回 false
。
更新日志
版本 | 说明 |
---|---|
7.3.0 | mode 参数为可选,之前版本中为必选。 |
范例
示例 #1 ftp_put 实例
<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';
// 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";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection
ftp_close($conn_id);
?>
参见
- ftp_pasv
- ftp_fput
- ftp_nb_fput
- ftp_nb_put
ftp_pwd
返回当前目录名
说明
string <span
class="methodname">ftp_pwd ( <span
class="type">resource $ftp_stream
)
参数
ftp_stream
FTP 连接资源。
返回值
返回当前目录名称,发生错误则返回 false
。
范例
示例 #1 ftp_pwd 例子
<?php
// 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);
// change directory to public_html
ftp_chdir($conn_id, 'public_html');
// print current directory
echo ftp_pwd($conn_id); // /public_html
// close the connection
ftp_close($conn_id);
?>
参见
- ftp_chdir
- ftp_cdup
ftp_quit
ftp_close 的 别名
说明
此函数是该函数的别名: ftp_close
ftp_raw
向 FTP 服务器发送命令
说明
array ftp_raw
( resource
$ftp_stream
, <span
class="type">string $command
)
向 FTP 服务器发送任意 command
。
参数
ftp_stream
FTP 连接标示符。
command
要执行的命令。
返回值
将服务器的响应以字符串数组的形式返回。 对于响应内容既不做解析处理, 也不检测命令是否执行成功。
范例
示例 #1 使用 ftp_raw 登录远程 FTP 服务器
<?php
$fp = ftp_connect("ftp.example.com");
/* 等同于
ftp_login($fp, "joeblow", "secret"); */
ftp_raw($fp, "USER joeblow");
ftp_raw($fp, "PASS secret");
?>
参见
- ftp_exec
ftp_rawlist
返回指定目录下文件的详细列表
说明
array <span
class="methodname">ftp_rawlist ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $directory
[, bool
$recursive
= false
] )
ftp_rawlist 函数将执行 FTP LIST 命令,并把结果做为一个数组返回。
参数
ftp_stream
FTP 连接资源。
directory
要操作的目录路径,可以包括 LIST 参数。
recursive
如果此参数为 true
,实际执行的命令将会为 LIST -R。
返回值
返回一个数组,数组的每个元素为返回文本的每一行,输出结构不会被解析。使用函数 ftp_systype 可以用来判断 FTP 服务器的类型,从而可以用来判断返回列表的类型。
The output is not parsed in any way. The system type identifier returned by ftp_systype can be used to determine how the results should be interpreted.
范例
示例 #1 ftp_rawlist 示例
<?php
// 初始化连接
$conn_id = ftp_connect($ftp_server);
// 使用用户名和密码登录
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 获取 / 路径下的文件列表
$buff = ftp_rawlist($conn_id, '/');
// 关闭连接
ftp_close($conn_id);
// 输出
var_dump($buff);
?>
以上例程的输出类似于:
array(3) {
[0]=>
string(65) "drwxr-x--- 3 vincent vincent 4096 Jul 12 12:16 public_ftp"
[1]=>
string(66) "drwxr-x--- 15 vincent vincent 4096 Nov 3 21:31 public_html"
[2]=>
string(73) "lrwxrwxrwx 1 vincent vincent 11 Jul 12 12:16 www -> public_html"
}
参见
- ftp_nlist
- ftp_mlsd
ftp_rename
更改 FTP 服务器上的文件或目录名
说明
bool <span
class="methodname">ftp_rename ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $oldname
,
string
$newname
)
ftp_rename 将 FTP 服务器上的一个文件或目录改名。
参数
ftp_stream
FTP 连接的标识符。
oldname
原来的文件/目录名。
newname
新名字。
返回值
成功时返回 true
, 或者在失败时返回 false
。
失败时(比如试图重命名一个不存在的文件)将会抛出一个 E_WARNING
错误信息。
范例
示例 #1 ftp_rename 例子
<?php
$old_file = 'somefile.txt.bak';
$new_file = 'somefile.txt';
// 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);
// try to rename $old_file to $new_file
if (ftp_rename($conn_id, $old_file, $new_file)) {
echo "successfully renamed $old_file to $new_file\n";
} else {
echo "There was a problem while renaming $old_file to $new_file\n";
}
// close the connection
ftp_close($conn_id);
?>
ftp_rmdir
删除 FTP 服务器上的一个目录
说明
bool <span
class="methodname">ftp_rmdir ( <span
class="type">resource $ftp_stream
, <span
class="methodparam">string $directory
)
删除由参数 directory
指定的目录。
参数
ftp_stream
FTP 连接资源。
directory
要删除的目录,必须是一个空目录的绝对路径或相对路径。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 ftp_rmdir 例子
<?php
$dir = 'www/';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_rmdir($conn_id, $dir)) {
echo 'Successfully deleted ' . $dir;
} else {
echo 'There was a problem while deleting ' . $dir;
}
ftp_close($conn_id);
?>
参见
- ftp_mkdir
ftp_set_option
设置各种 FTP 运行时选项
说明
bool <span
class="methodname">ftp_set_option ( <span
class="methodparam">resource
$ftp_stream
, <span
class="type">int $option
, <span
class="methodparam">mixed $value
)
本函数控制指定 FTP 流的各种运行时选项。
参数
ftp_stream
FTP 连接的标识符。
option
目前支持以下选项:
FTP_TIMEOUT_SEC |
改变网络传输的超时时间。参数 value 必须为整数且大于 0。默认的超时时间为 90 秒。 |
FTP_AUTOSEEK |
当此选项打开时,带 resumepos 或 startpos 参数的GET 或 PUT 请求 将先检索到文件中指定的位置。此选项默认是打开的。 |
FTP_USEPASVADDRESS |
当此选项禁用时,PHP 会忽略掉 FTP 服务器通过 PASV 命令返回的 IP 地址,直接使用在 ftp_connect() 中指定的地址。value 参数必须是布尔型。 |
value
本参数取决于要修改哪个 option
。
返回值
如果选项能够被设置,返回 true
,否则返回 false
。如果参数
option
不被支持或者给定的参数 value
的值与参数 option
不匹配,则会同时返回一条警告信息。
范例
示例 #1 ftp_set_option 例子
<?php
// 设置网络传输超时时间为 10 秒
ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 10);
?>
参见
- ftp_get_option
ftp_site
向服务器发送 SITE 命令
说明
bool ftp_site
( resource
$ftp_stream
, <span
class="type">string $command
)
ftp_site 函数向 FTP 服务器发送指定的命令。
SITE 命令是非标准化的,不同的服务器不尽相同。主要用于处理文件权限以及组成员等事情。
参数
ftp_stream
FTP 连接资源。
command
SITE
命令。注意本参数没有经过处理,在文件名有存在空格或其它特殊字符的情况下可能会有问题。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 向一个 FTP 服务器发送一条 SITE 命令
<?php
// 连接 FTP 服务器
$conn = ftp_connect('ftp.example.com');
if (!$conn) die('无法连接到 ftp.example.com');
// 使用用户 user 和密码 pass 登录服务器
if (!ftp_login($conn, 'user', 'pass')) die('登录失败到 ftp.example.com');
// Issue: "SITE CHMOD 0600 /home/user/privatefile" command to ftp server
if (ftp_site($conn, 'CHMOD 0600 /home/user/privatefile')) {
echo "命令执行成功。\n";
} else {
die('命令执行失败。');
}
?>
参见
- ftp_raw
ftp_size
返回指定文件的大小
说明
int ftp_size
( resource
$ftp_stream
, <span
class="type">string $remote_file
)
ftp_size 函数以字节返回远程文件
remote_file
的大小。如果指定文件不存在或发生错误,则返回 -1。有些 FTP
服务器可能不支持此特性。
Note:
获取成功返回文件大小,否则返回 -1。
参数
ftp_stream
FTP 连接资源。
remote_file
远程文件。
返回值
执行成功返回文件大小,失败返回 -1。
范例
示例 #1 ftp_size 例子
<?php
$file = 'somefile.txt';
// 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);
// get the size of $file
$res = ftp_size($conn_id, $file);
if ($res != -1) {
echo "size of $file is $res bytes";
} else {
echo "couldn't get the size";
}
//close the conntion
ftp_close($conn_id);
?>
参见
- ftp_rawlist
ftp_ssl_connect
打开 SSL-FTP 连接
说明
resource <span
class="methodname">ftp_ssl_connect ( <span
class="methodparam">string $host
[,
int $port
<span
class="initializer"> = 21 [, <span
class="methodparam">int $timeout
<span
class="initializer"> = 90 ]] )
ftp_ssl_connect 显式的打开一个到
host
的安全 FTP 连接(SSL-FTP)。 即使服务器未配置
SSL-FTP,或者服务器的证书无效,<span
class="function">ftp_ssl_connect
函数也会成功的建立到服务器的连接。直到调用 <span
class="function">ftp_login 函数的时候, 客户端才会发送对应的
AUTH FTP 命令,此时,如果服务器未配置 SSL-FTP 或者整数无效, <span
class="function">ftp_login 函数会失败。
Note: 为何本函数有可能不存在?
只有 PHP 构建时同时包含了 ftp 模块 和 OpenSSL 模块时, <span class="function">ftp_ssl_connect 函数才可用。 也就是说,在 Windows 平台上,官方发布的 PHP 构建中本函数不可用。 如果需要在 Windows 平台使用本函数,需要自行编译 PHP。
Note:
ftp_ssl_connect 不是用来连接 sFTP 服务的。 要在 PHP 中使用 sFTP,请参见 <span class="function">ssh2_sftp。
参数
host
FTP 服务器地址。 此参数末尾不可以有斜线,开头也不可以有 ftp://。
port
要连接的端口。如果省略此参数或设置为 0,将使用 FTP 默认端口 21。
timeout
此参数设置所有后续网络操作的超时时长。 如果省略,默认值为 90 秒。
可以使用 ftp_set_option 和 <span
class="function">ftp_get_option 函数随时读取或设置超时时长。
返回值
操作成功返回 SSL-FTP 流,操作失败返回 false
。
更新日志
版本 | 说明 |
---|---|
5.2.2 | 以前版本中,如果无法使用 SSL 连接,将会返回一个非 SSL 的连接, 在 5.2.2 版本中修改为返回 false |
范例
示例 #1 ftp_ssl_connect 函数例程
<?php
// 建立基础 SSL 连接
$conn_id = ftp_ssl_connect($ftp_server);
// 使用用户名和密码登录
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (!$login_result) {
// 在这种情况下,PHP 会发生 E_WARNING 级别的告警消息
die("can't login");
}
echo ftp_pwd($conn_id); // /
// 关闭 ssl 连接
ftp_close($conn_id);
?>
参见
- ftp_connect
ftp_systype
返回远程 FTP 服务器的操作系统类型
说明
string <span
class="methodname">ftp_systype ( <span
class="type">resource $ftp_stream
)
返回远程 FTP 服务器的操作系统类型。
参数
ftp_stream
FTP 连接资源。
返回值
返回远程服务器类型,发生错误则返回 false
。
范例
示例 #1 ftp_systype 示例
<?php
// 建立 ftp 连接
$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'user', 'password');
// 获取操作系统类型
if ($type = ftp_systype($ftp)) {
echo "Example.com 的操作系统为 $type\n";
} else {
echo "无法获取操作系统类型";
}
?>
以上例程的输出类似于:
Example.com 的操作系统为 UNIX
目录
- ftp_alloc — 为要上传的文件分配空间
- ftp_append — Append the contents of a file to another file on the FTP server
- 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 — Returns a list of files in the given directory
- 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 服务器上的一个目录
- ftp_set_option — 设置各种 FTP 运行时选项
- ftp_site — 向服务器发送 SITE 命令
- ftp_size — 返回指定文件的大小
- ftp_ssl_connect — 打开 SSL-FTP 连接
- ftp_systype — 返回远程 FTP 服务器的操作系统类型