Bacysoft.cn

 找回密码
 邀请注册
查看: 20057|回复: 0
打印 上一主题 下一主题

Warning: ftp_put() 问题的解决办法之被动模式

[复制链接]
跳转到指定楼层
楼主
发表于 2011-9-13 15:56:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题代码如下:
  1. <?php
  2. $conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect");
  3. ftp_login($conn,"test","test1234");
  4. ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0);
  5. ftp_close($conn);
  6. echo "done";
  7. ?>
复制代码
代码说明:
本代码通过PHP服务器在后台使用 FTP 协议将本地文件 “local.rar” 上传到远程 FTP 文件服务器上,并保存为 “target.rar”。即 PHP 服务器作为 FTP Client 上传文件到 FTP Server...

以上代码运行后出错,错误提示如下:
  1. Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection for target.rar. in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 4

  2. Fatal error: Maximum execution time of 60 seconds exceeded in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 5
复制代码
出错原因:
服务器一般都是放在防火墙后面,因此 FTP 客户端程序如果需要穿越防火墙,需要开启被动模式,否则执行任何 ftp 命令都没有响应,直到出现 “最大执行时间超时” 的致命错误,导致程序终止运行...

解决办法:开启 FTP 被动模式,正确代码如下:
  1. <?php
  2. $conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect");
  3. ftp_login($conn,"test","test1234");
  4. ftp_pasv($conn, true);
  5. ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0);
  6. ftp_close($conn);
  7. echo "done";
  8. ?>
复制代码
您需要登录后才可以回帖 登录 | 邀请注册

本版积分规则



京ICP备08000958号-1|腾讯云|阿里云|联系方式|Bacysoft.cn

GMT+8, 2024-12-26 17:25 , Processed in 0.013236 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表