首页->正文

windows下php的ftp函数问题

2011-10-09 -Web开发 标签: php

有个需求要给ftp服务器上传文件,了解了下相关的ftp函数。发现Windows下可用正常连接到ftp服务器,但是一执行文件操作,如获取文件列表(ftp_nlist),下载文件(ftp_get),上传文件(ftp_put)等操作时就会返回空,或者报错,提示类似
“Warning: ftp_get(): PORT command successful in F:\test\ftp_get.php on line 23”
“Warning: ftp_put(): PORT command successful in F:\test\ftp_put.php on line 37”
但同样的代码放到Linux环境下却是正常运行。

查询官方手册里面的评论中提到了
“always keep an eye on the ftp_pasv function, if you are behind a firewall or nat'ed and your scripts won't do a listing or put files to the ftp”
看样子应该是windows下的防火墙所导致。再查询下ftp的被动模式,介绍ftp主动模式和被动模式的区别中同样提到了“被动模式的ftp通常用在处于防火墙之后的ftp客户访问外界ftp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机……”

因此通过ftp_pasv()设置为被动传输模式即可。

其实常用的ftp软件中可以看到相关的设置,如FlashFXP中就有关于是否选择“使用被动模式”的选项。

ftp主动模式和被动模式的区别介绍见:
http://www.moon-soft.com/program/bbs/readelite1095089.htm
http://vod.sjtu.edu.cn/help/Article_Show.asp?ArticleID=137

下一篇 特殊字符及转义上应注意的问题

上一篇 javascript中setInterval引起的倒计时问题

相关文章

Ubuntu下编译安装PHP

使用curl_multi_init并发请求

php增加Last-Modified为何无效

用xhprof分析php代码

正则修饰符m和s用法

文章分类

开发小提示

  • 1:Mongodb中通过db.yourCollectionName. dataSize()查看某个文档的大小
  • 2:linux下用reset命令恢复查看二进制文件导致的命令行乱码
  • 3:查看MySQL表的索引情况show index from tableName
  • 更多...

交流

  • wangnow(a)126.com