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. --save 和 --save-dev的区别

    --save是对生产环境所需依赖的声明(开发应用中使用的框架,库,比如jquery,bootstrap等) --save-dev是对开发环境所需依赖的声明(构建工具,测试工具,比如babel,gulp ...

  2. 4 安装MPush

    cnblogs-DOC 1.服务器环境 2.安装Redis3.安装Zookeeper4.安装MPush5.安装Alloc服务6.完整测试7.常见问题 一.Linux安装Mpush [root@loca ...

  3. 随应潮流-基于ABP+Angulsrjs现代化应用软件开发框架(1)-总体介绍

    前言 近几年一直从事电子政务和企业管理软件的外包开发工作,深感开发技术更新之快,尤其随着移动互联网的发展,前端技术发展更是一日千里. 现在随便一个项目都要求多端使用(PC+App+微信),如果没有一个 ...

  4. iOS 2017年, 上传审核被拒绝.到奔溃

    2017年,苹果并没有因为新年的气氛而对CP们"网开一面".频繁锁榜.调整排名规则以及关键词覆盖算法--不断抛出的大动作,让CP们叫苦不迭.且从1月初开始,苹果还进一步加强了对应用 ...

  5. HTML和CSS的知识点

    HTML的知识点 HTML的结构: <!DOCTYPE html>: 文档类型性为HTML5文件 文档声明:在HTML的文档中必不可少,且必须在文档的第一行 文档声明的编码格式<!- ...

  6. phpcms添加视频

    phpcms添加视频分为三种情况,一种是在首页播放,一种是在列表页播放,另一种是在内容页播放.其中在首页播放和在列表页播放的区别就是catid值是固定的还是取得当前catid的区别.而在首页和列表页播 ...

  7. 《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)

    概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识 ...

  8. bootstrap快速入门笔记(七)-表格,表单

    一,表格 1,<table>中加.table类 2,条纹表格:通过 .table-striped 类可以给 <tbody> 之内的每一行增加斑马条纹样式. **跨浏览器兼容性: ...

  9. summerDao-比mybatis更强大无需映射配置的dao工具

    summerDao是summer框架中的一个数据库操作工具,项目地址:http://git.oschina.net/xiwa/summer. 怎么比mybatis更强大,怎么比beetlsql更简单, ...

  10. 通过 jdbc 分析数据库中的表结构和主键外键

    文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hib ...