ftp_alloc

为要上传的文件分配空间

说明

bool ftp_alloc ( resource $ftp_stream , 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', 'user@example.com');

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 ftp_append ( resource $ftp , string $remote_file , string $local_file [, int $mode = 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 ftp_chdir ( resource $ftp_stream , 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 , int $mode , 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 ftp_close ( resource $ftp_stream )

ftp_close 关闭给出的连接标识符并释放资源。

Note:

调用本函数后,将不能再使用 FTP 连接,必须用 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 ftp_connect ( string $host [, int $port [, int $timeout ]] )

如果成功返回一个连接标识,失败则返回 FALSE

ftp_connect 打开一个 FTP 连接,参数 host 为要连接的服务器。host 后面不应以斜线结尾,前面也不需要用 ftp:// 开头。可选参数port 为要连接到的 FTP 器的端口号,如果没有设置或者为0,则会使用默认的端口 21 来连接。

可选参数 timeout 用来设置网络传输的超时时间限制。如果此选项留空,则默认的值为 90 秒。超时时间可以在任何时候通过函数 ftp_set_optionftp_get_option 来改变和获取。

Note:

参数 timeout 仅适用于 PHP 4.2.0 及以上版本.

示例 #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_closeftp_ssl_connect

ftp_delete

删除 FTP 服务器上的一个文件

说明

bool ftp_delete ( resource $ftp_stream , 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 , string $command )

发送一个 SITE EXEC command 请求到 FTP 服务器。如果成功(服务器发送响应代码 200)则返回 TRUE,否则返回 FALSE

示例 #1 ftp_exec 例子

<?php
$command = 'ls -al';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if($res = ftp_exec($conn_id, $command)) {
    echo "$command executed successfully<br />\n";
    echo nl2br($res);
} else {
    echo 'could not execute ' . $command;
}
?>

参见 ftp_raw

ftp_fget

从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中

说明

bool ftp_fget ( resource $ftp_stream , resource $handle , string $remote_file , int $mode [, int $resumepos = 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 , string $remote_file , 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 ftp_get_option ( resource $ftp_stream , int $option )

如果成功则返回选项的值,否则,如果给定的参数 option 选项如果不被支持则返回 FALSE 同时会提示一条错误信息。

此函数会返回连接句柄为 ftp_stream,指定键值 option 的值,截止到目前,以下选项被支持:

FTP_TIMEOUT_SEC返回当前设定的网络操作的超时时间。

示例 #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 , string $local_file , string $remote_file , int $mode [, int $resumepos = 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 ftp_login ( resource $ftp_stream , 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 , string $remote_file )

ftp_mdtm 检查指定文件的最后修改时间,并以 UNIX 时间戳的方式返回。如果发生错误,或文件不存在则返回 -1。

示例 #1 ftp_mdtm 例子

<?php
$file = 'somefile.txt';

// connect to the server
$conn_id = ftp_connect($ftp_server);
$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);
?>

如果成功返回一个 UNIX 时间戳,否则返回 -1。

Note:

某些 FTP 服务器可能会不支持这个特性。

Note:

ftp_mdtm 函数不适用于检查目录。

ftp_mkdir

建立新目录

说明

string ftp_mkdir ( resource $ftp_stream , string $directory )

在 FTP 服务器上建立一个目录名为参数 directory 的新目录。

如果成功返回新建的目录名,否则返回 FALSE

参见 ftp_rmdir

ftp_mlsd

Returns a list of files in the given directory

说明

array ftp_mlsd ( resource $ftp_stream , 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 ftp_nb_continue ( resource $ftp_stream )

以不分块的方式连续获取/发送一个文件。

返回常量 FTP_FAILEDFTP_FINISHEDFTP_MOREDATA

ftp_nb_fget

从 FTP 服务器获取文件并写入到一个打开的文件(非阻塞)

说明

int ftp_nb_fget ( resource $ftp_stream , resource $handle , string $remote_file [, int $mode = FTP_IMAGE [, int $resumepos = 0 ]] )

ftp_nb_fget 从远程 FTP 服务器获取一个文件

本函数和 ftp_fget 函数的区别是 本函数是异步方式获取文件的, 所以在下载文件的过程中你的程序还可以执行其他操作。

参数

ftp_stream
FTP 连接标示符。

handle
用来存储数据的一个已经打开的文件句柄。

remote_file
远程文件路径。

mode
传输模式,必须是 FTP_ASCII 或者 FTP_BINARY

resumepos
远程文件开始下载的位置(即从远程文件的哪个字节开始下载)。

返回值

返回 FTP_FAILEDFTP_FINISHEDFTP_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 ftp_nb_fput ( resource $ftp_stream , string $remote_file , resource $handle [, int $mode = FTP_IMAGE [, int $startpos = 0 ]] )

ftp_nb_fput 把已打开的文件内容存储到远程 FTP 服务器

本函数和 ftp_fput 函数的区别是 本函数是异步上传文件。 所以在文件上传过程中,你的程序还可以执行其他操作。

参数

ftp_stream
FTP 连接标示符。

remote_file
远程文件路径。

handle
已经打开的本地文件指针,当读取到文件末尾时结束。

mode
传输模式。必须是 FTP_ASCIIFTP_BINARY

startpos
要将文件存储到远程文件的开始位置(即从远程文件的哪个字节位置开始存储)。

返回值

返回 FTP_FAILEDFTP_FINISHEDFTP_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)

说明

bool ftp_nb_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos ] )

ftp_nb_get 函数用来获取参数 remote_file 指定的的远程文件,并保存到由参数 local_file 指定的本地文件。传输模式参数 mode 只能为 FTP_ASCII (文本模式) 或 FTP_BINARY (二进制模式) 两种。与 ftp_get 函数不同的是,此函数上传文件的时候采用的是异步传输模式,也就意味着在文件传送的过程中,你的程序可以继续干其它的事情。

返回 FTP_FAILEDFTP_FINISHEDFTP_MOREDATA

示例 #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"));
// 或: $ret = ftp_nb_get ($my_connection, "test", "README",
//                           FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

   // 可以插入其它代码
   echo ".";

   // 继续传送...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "下载出错...";
   exit(1);
}
?>

示例 #3 用 ftp_nb_get 在 100 的位置断线续传并存为 "newfile"

// 禁止自动搜寻
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" 文件比服务器上的文件 "README" 要小 100 字节。这是因为我们是从文件的偏移量 100 处开始读取的,如果没有禁止 FTP_AUTOSEEK,则 "newfile" 的前 100 字节将会是 '\0'

参见 ftp_nb_fgetftp_nb_continueftp_getftp_fget

ftp_nb_put

存储一个文件至 FTP 服务器(non-blocking)

说明

int ftp_nb_put ( resource $ftp_stream , string $remote_file , string $local_file , int $mode [, int $startpos ] )

ftp_nb_put 函数用来把本地文件 local_file 存储到 FTP 服务器上由 remote_file 参数指定的路径。传输模式参数 mode 只能为 FTP_ASCII (文本模式) 或 FTP_BINARY (二进制模式) 两种。与函数 ftp_put 不同的是,此函数上传文件的时候采用的是异步传输模式,也就意味着在文件传送的过程中,你的程序可以继续干其它的事情。

返回 FTP_FAILEDFTP_FINISHEDFTP_MOREDATA

示例 #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_fputftp_nb_continueftp_putftp_fput

ftp_nlist

返回给定目录的文件列表

说明

array ftp_nlist ( resource $ftp_stream , 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_pasv

返回当前 FTP 被动模式是否打开

说明

bool ftp_pasv ( resource $ftp_stream , bool $pasv )

在被动模式打开的情况下,数据的传送由客户机启动,而不是由服务器开始。

请注意 ftp_pasv 只能在 FTP 登录成功后方可调用,否则会失败。

参数

ftp_stream
FTP 连接资源。

pasv
如果参数 pasvTRUE,打开被动模式传输 (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 , string $remote_file , string $local_file , int $mode [, int $startpos ] )

ftp_put 函数用来上传由 local_file 参数指定的文件到 FTP 服务器,上传后的位置由 remote_file 指定。传输模式参数

参数

ftp_stream
FTP 连接资源。

remote_file
远程文件路径。

local_file
本地文件路径。

mode
传送模式,只能为 FTP_ASCII(文本模式)或 FTP_BINARY(二进制模式)。

startpos

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #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);
?>

更新日志

版本说明
4.3.0增加 startpos 参数。

参见

  • ftp_pasv
  • ftp_fput
  • ftp_nb_fput
  • ftp_nb_put

ftp_pwd

返回当前目录名

说明

string ftp_pwd ( 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 , 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 ftp_rawlist ( resource $ftp_stream , string $directory )

ftp_rawlist 函数将执行 FTP LIST 命令,并把结果做为一个数组返回。

参数

ftp_stream
FTP 连接资源。

directory
目录路径。

recursive
如果此参数为 TRUE,实际执行的命令将会为 LIST -R

返回值

返回一个数组,数组的每个元素为返回文本的每一行,输出结构不会被解析。使用函数 ftp_systype 可以用来判断 FTP 服务器的类型,从而可以用来判断返回列表的类型。

范例

示例 #1 ftp_rawlist 例子

<?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 the file list for /
$buff = ftp_rawlist($conn_id, '/');

// close the connection
ftp_close($conn_id);

// output the buffer
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"
}

更新日志

版本说明
4.3.0增加 recursive 参数。

参见

  • ftp_nlist

ftp_rename

更改 FTP 服务器上的文件或目录名

说明

bool ftp_rename ( resource $ftp_stream , string $oldname , string $newname )

ftp_rename 将 FTP 服务器上的一个文件或目录改名。

参数

ftp_stream
FTP 连接的标识符。

oldname
原来的文件/目录名。

newname
新名字。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #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 ftp_rmdir ( resource $ftp_stream , 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 ftp_set_option ( resource $ftp_stream , int $option , mixed $value )

本函数控制指定 FTP 流的各种运行时选项。

参数

ftp_stream
FTP 连接的标识符。

option
目前支持以下选项:

FTP_TIMEOUT_SEC改变网络传输的超时时间。参数 value 必须为整数且大于 0。默认的超时时间为 90 秒。
FTP_AUTOSEEK当此选项打开时,带 resumeposstartpos 参数的GET 或 PUT 请求 将先检索到文件中指定的位置。此选项默认是打开的。

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 , string $cmd )

ftp_site 函数向 FTP 服务器发送由参数 cmd 指定的命令。

SITE 命令是非标准化的,不同的服务器不尽相同。主要用于处理文件权限以及组成员等事情。

参数

ftp_stream
FTP 连接资源。

command
SITE 命令。注意本参数没有经过处理,在文件名有存在空格或其它特殊字符的情况下可能会有问题。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 向一个 FTP 服务器发送一条 SITE 命令

<?php
/* Connect to FTP server */
$conn = ftp_connect('ftp.example.com');
if (!$conn) die('Unable to connect to ftp.example.com');

/* Login as "user" with password "pass" */
if (!ftp_login($conn, 'user', 'pass')) die('Error logging into ftp.example.com');

/* Issue: "SITE CHMOD 0600 /home/user/privatefile" command to ftp server */
if (ftp_site($conn, 'CHMOD 0600 /home/user/privatefile')) {
   echo "Command executed successfully.\n";
} else {
   die('Command failed.');
}
?>

参见

  • ftp_raw

ftp_size

返回指定文件的大小

说明

int ftp_size ( resource $ftp_stream , 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 ftp_ssl_connect ( string $host [, int $port = 21 [, int $timeout = 90 ]] )

ftp_ssl_connect 显式的打开一个到 host 的安全 FTP 连接(SSL-FTP)。 即使服务器未配置 SSL-FTP,或者服务器的证书无效,ftp_ssl_connect 函数也会成功的建立到服务器的连接。直到调用 ftp_login 函数的时候, 客户端才会发送对应的 AUTH FTP 命令,此时,如果服务器未配置 SSL-FTP 或者整数无效, ftp_login 函数会失败。

Note: 为何本函数有可能不存在?

只有 PHP 构建时同时包含了 ftp 模块 和 OpenSSL 模块时, class="function">ftp_ssl_connect 函数才可用。 也就是说,在 Windows 平台上,官方发布的 PHP 构建中本函数不可用。 如果需要在 Windows 平台使用本函数,需要自行编译 PHP。

Note:

ftp_ssl_connect 不是用来连接 sFTP 服务的。 要在 PHP 中使用 sFTP,请参见 class="function">ssh2_sftp

参数

host
FTP 服务器地址。 此参数末尾不可以有斜线,开头也不可以有 ftp://

port
要连接的端口。如果省略此参数或设置为 0,将使用 FTP 默认端口 21。

timeout
此参数设置所有后续网络操作的超时时长。 如果省略,默认值为 90 秒。 可以使用 ftp_set_optionftp_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 ftp_systype ( resource $ftp_stream )

返回远程服务器的系统类型,发生错误则返回 FALSE

参数

ftp_stream
FTP 连接资源。

返回值

返回远程服务器类型,失败返回 FALSE

范例

示例 #1 ftp_systype 例子

<?php
// ftp connection
$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'user', 'password');

// get the system type
if ($type = ftp_systype($ftp)) {
    echo "Example.com is powered by $type\n";
} else {
    echo "Couldn't get the systype";
}
?>

以上例程的输出类似于:

Example.com is powerd by 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 服务器的操作系统类型