FTP服务器搭建及操作(一)

FTP搭建
PHP
FTP操作

搭建方法参照(windows):http://www.cnblogs.com/lidan/archive/2012/06/04/2535103.html

打开浏览器,输入你的IP,ftp://xxx.xxx.xxx.xxx。自己的FTP搭建成功!

FTP 是一种数据传输协议 (File Transfer Protocol),它的连接模式有两种: 主动模式( active )和被动模式( passive )。

以下说明FTP的连接是怎样建立的:

1. 在 active 模式下 (一般预设的模式):

FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求建立连接。当完成 Three-Way Handshake 之后,连接就成功建立,但这仅是命令通道的建立。
当两端需要传送数据资料的时候,client 透过命令通道用一个 port command 告诉 server ,client可以用另一个TCP port 做数据通道。
然后 server 用 port 20 和刚才client 所告知的 TCP port 建立数据连接。注意:连接方向是从server 到 client 的,TCP 分组中会有一个 SYN flag。
然后 client 会返回一个带 ACK flag的确认分组,并完成另一次的 Three-Way Handshake 过程。这时候,数据连接才能成功建立。开始数据传送。

2. 在 passive 模式下:

FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求建立连接,完成命令通道的建立。

当两端需要传送数据的时候,client 通过命令通道发送一个 PASV command 给server,要求进入 passive 传输模式。
然后 server 像上述的正常模式之第 2 步骤那样,挑一个TCP port ,并用命令通道告诉 client。
然后 client 用另一个TCP port 呼叫刚才 server 告知的 TCP port 来建立数据通道。此时分组中带有 SYN flag。
server 确认后回送一个 ACK 分组。并完成所有握手过程、成功建立数据通道。
开始数据传送。 在实际使用中, active mode 用来登入一些架设在主机上没有安装防火墙的 FTP server,或是架设在 client side 的 FTP server! Passive mode (简称 PASV)用来登陆一些架设于防火墙保护下而又是开设于主机上的 FTP server!

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

PHP操作实例
<?php

$ftp_server = "192.168.0.100";//"ftp.sun.com"
$ftp_user_name = "Admin";
$ftp_user_pass = "123456";
$source_file = 'test.txt';
//$destination_file = 'test/readme.txt' ;
$destination_file = 'readme.txt' ; // set up basic connection
$conn_id = ftp_connect ( $ftp_server,21 ); // login with username and password
$login_result = ftp_login ( $conn_id , $ftp_user_name , $ftp_user_pass ); //被动模式打开 or 关闭
$pasv = ftp_pasv($conn_id,true );
print_r( "被动模式结果 ".$pasv." \r\n" ); //获取远端系统类型
if ( $type = ftp_systype ( $conn_id )) {
echo " powered by $type \n" ;
} else {
echo "Couldn't get the systype" ;
} // check connection
if ((! $conn_id ) || (! $login_result )) {
echo "FTP connection has failed!" ;
echo "Attempted to connect to $ftp_server for user $ftp_user_name " ;
exit;
} else {
echo "Connected to $ftp_server , for user $ftp_user_name \r\n" ;
} //为要上传到 FTP 服务器的文件分配空间。
ftp_alloc($conn_id,"160",$response);
echo $response."\r\n"; //将当前目录改为目标文件
echo "当前目录更改 ".ftp_chdir ( $conn_id , "test" )."\r\n"; //删除服务端文件
if (ftp_size($conn_id,$destination_file)){
echo "找到目录了\r\n";
echo "删除文件 ".ftp_delete($conn_id,$destination_file)."\r\n";
} // upload the file
$upload = ftp_put ( $conn_id , $destination_file , $source_file , FTP_ASCII ); // check upload status
if (! $upload ) {
echo "FTP upload has failed!" ;
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file\r\n " ;
} //返回当前目录内容
print_r("当前目录 :");
print_r( ftp_nlist( $conn_id,'.' )); // close the FTP stream
ftp_close ( $conn_id ); ?>

注意事项

  • 连接地址一般为ip、解析的地址;

  • 上传文件出错请检查当前账户是否有写权限;

FTP操作类

PHP FTP 函数

PHP:指示支持该函数的最早的 PHP 版本。
函数 描述 PHP
ftp_alloc() 为要上传到 FTP 服务器的文件分配空间。 5
ftp_cdup() 把当前目录改变为 FTP 服务器上的父目录。 3
ftp_chdir() 改变 FTP 服务器上的当前目录。 3
ftp_chmod() 通过 FTP 设置文件上的权限。 5
ftp_close() 关闭 FTP 连接。 4
ftp_connect() 打开 FTP 连接。 3
ftp_delete() 删除 FTP 服务器上的文件。 3
ftp_exec() 在 FTP 上执行一个程序/命令。 4
ftp_fget() 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中。 3
ftp_fput() 上传一个已打开的文件,并在 FTP 服务器上把它保存为一个文件。 3
ftp_get_option() 返回当前 FTP 连接的各种不同的选项设置。 4
ftp_get() 从 FTP 服务器下载文件。 3
ftp_login() 登录 FTP 服务器。 3
ftp_mdtm() 返回指定文件的最后修改时间。 3
ftp_mkdir() 在 FTP 服务器创建一个新目录。 3
ftp_nb_continue() 连续获取/发送文件 (non-blocking)。 4
ftp_nb_fget() 从FTP服务器上下载文件并保存到本地已经打开的文件中(non-blocking) 4
ftp_nb_fput() 上传已打开的文件,并在FTP服务器上把它保存为文件(non-blocking)。 4
ftp_nb_get() 从 FTP 服务器下载文件 (non-blocking)。 4
ftp_nb_put() 把文件上传到服务器 (non-blocking)。 4
ftp_nlist() 返回指定目录的文件列表。 3
ftp_pasv() 返回当前 FTP 被动模式是否打开。 3
ftp_put() 把文件上传到服务器。 3
ftp_pwd() 返回当前目录名称。 3
ftp_quit() ftp_close() 的别名。 3
ftp_raw() 向 FTP 服务器发送一个 raw 命令。 5
ftp_rawlist() 返回指定目录中文件的详细列表。 3
ftp_rename() 重命名 FTP 服务器上的文件或目录。 3
ftp_rmdir() 删除 FTP 服务器上的目录。 3
ftp_set_option() 设置各种 FTP 运行时选项。 4
ftp_site() 向服务器发送 SITE 命令。 3
ftp_size() 返回指定文件的大小。 3
ftp_ssl_connect() 打开一个安全的 SSL-FTP 连接。 4
ftp_systype() 返回远程 FTP 服务器的系统类型标识符。 3

FTP服务器搭建及操作(一)的更多相关文章

  1. ftp服务器搭建及简单操作

    ftp服务器搭建及简单操作 1. 添加一个新用户,使用名useradd testftp,然后使用passwd testftp对新添加的用户设置密码(这里设置为“1234567”). 2. 安装ftp服 ...

  2. Linux CentOS 6.5 下 vsftpd ftp服务器搭建

    Linux CentOS 6.5 下 vsftpd ftp服务器搭建 by:授客 QQ:1033553122   操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.ce ...

  3. FTP-Linux中ftp服务器搭建

    一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...

  4. Linux之匿名FTP服务器搭建

    FTP(File Transfer Protocol)是在服务器与客户端进行文件传输的一种传输协议.本次介绍的是vsftpd的软件体验ftp服务. FTP服务器默认情况下依据用户登录情况分为三种不同的 ...

  5. FTP服务器搭建及自动备份设置

    本次随笔内容主要是FTP服务器搭建. 其实去年十月服务器就搭建完了.当时写了个PPT保存了一下,准备以后写博客,结果时隔快一年我自己都快要看不懂我自己写的PPT了  ( = o = ) 不过还是尽量尝 ...

  6. Linux中ftp服务器搭建

    一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...

  7. 记一次ftp服务器搭建走过的坑

    记一次ftp服务器搭建走过的坑 1.安装 ①下载 wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要FQ ②解压 ta ...

  8. 《Linux下FTP服务器搭建及FTP使用》

    .LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...

  9. (转)【Java FTP及FTP服务器搭建】

    转至 http://blog.csdn.net/studyvcmfc/article/details/8147052 目录(?)[+] -[Java FTP及FTP服务器搭建] 一:本文采用apach ...

随机推荐

  1. windows升级到1607后操作很卡顿的解决办法

    CPU I5,固态128G,win7主系统,WIN10和WIN7都安装在固态硬盘上. 未升级之前,操作很流畅,以至于把家里的老古董电脑也换固态,系统换WIN10了.自从升级了1607后这个问题就出现了 ...

  2. win10 如何配置 java jdk1.8环境变量(2017.2.24)

    win10 如何配置 java jdk 环境变量 这里的win10 为全新安装的系统 一.安装 下载 jdk 64位 windows 版本安装(默认安装) 默认安装的路径: C:\Program Fi ...

  3. WebForm捆绑压缩js和css(WebForm Bundling and Minification)

    .net framework 4以上,可以使用Microsoft.AspNet.Web.Optimization 新建4.0项目 Nuget搜索optimization,安装第一个包 加入Bundle ...

  4. Keepalived高可用集群实践

    (1)实践的硬件环境准备 准备4台物理服务器或者4台VM虚拟机,其中两台用来做Keepalived服务器,两台做web测试站点 HOSTNAME I  P 解    释 lb01 10.0.0.7 K ...

  5. Java集合的区别和选择

              Collection |--List       有序,可重复 |--ArrayList 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高 |--Vector 底层数据结构 ...

  6. 光场相机重聚焦之三——Matlab光场工具包使用、重聚焦及多视角效果展示

    这一小节说一下Matlab光场工具包的使用,展示重聚焦和多视角的效果. 从Lytro illum中导出的raw数据为.lfp格式的光场图像文件(约52M大小),该文件包含以下几部分:光场图像数据raw ...

  7. Mvc自定义验证

    假设我们书店需要录入一本书,为了简单的体现我们的自定义验证,我们的实体定义的非常简单,就两个属性,一个名称Name,一个出版社Publisher. public class BookInfo { pu ...

  8. LINQ TO XML初步了解

    最近简单的学习了一下LINT TO XML,写篇博客在这,方便以后查看~~ 1.常用到的类   XmlDocument --    文档(xml文件)     XmlElement    --     ...

  9. xmlplus 组件设计系列之三 - 文本框

    文本框是页面中最常用的输入组件,它的默认使用方式如下: <input type='text'/> 当然,这里的 `type='text' 可以略去不写.大部分情况下,使用默认的文本框作为输 ...

  10. jQuery修炼心得-DOM节点的插入

    1. 内部插入append()与appendTo() append:这个操作与对指定的元素执行原生的appendChild方法,将它们添加到文档中的情况类似. appendTo:实际上,使用这个方法是 ...