ftp_nb_put 函数,php通过ftp上传文件到服务器失败

eightwhells 2015-12-31 07:10:44
程序是ecstore的导出队列程序。
php检测链接通过了,但是上传的时候总是提示上传文件失败。

ftp的文件夹权限给了777

有个现象不太理解:
ftp的被动传输模式打开了,但是用php 的 ftp_pasv 函数检测,返回值是false。

求各位大大解救?困扰了一天了,没个头绪
...全文
271 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-01-04
  • 打赏
  • 举报
回复
同步传输 ftp_put 可以吗?
eightwhells 2016-01-02
  • 打赏
  • 举报
回复
  public function nb_put($remote,$local,$resume=0){
        $mode = FTP_BINARY;
        $ret = ftp_nb_put($this->conn,$remote,$local,$mode,$this->size($remote));
        while ($ret == FTP_MOREDATA) {
            $ret = ftp_nb_continue($this->conn);
        }
        if ($ret != FTP_FINISHED) {
            trigger_error(app::get('importexport')->_('文件上传到FTP服务器错误'));
        }
        return true;
    }
这是上传的代码。
    public function __construct(){
        $this->ftp_server = app::get('importexport')->getConf('ftp_server_setting');
        if(!$this->conn){
            $this->ftp_server['port'] = $this->ftp_server['port'] ? $this->ftp_server['port'] : 21;
            $this->conn = ftp_connect($this->ftp_server['host'],$this->ftp_server['port']);
            ftp_login($this->conn,$this->ftp_server['name'],$this->ftp_server['pass']);
        }
        $this->cd($this->ftp_server['dir']);
    }
这是链接的代码
xuzuning 2016-01-01
  • 打赏
  • 举报
回复
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);
}
eightwhells 2016-01-01
  • 打赏
  • 举报
回复
引用 2 楼 fdipzone 的回复:
ftp_pasv() 只能在 FTP 登录成功后方可调用,否则会失败。 你先确定FTP是否登录成功。
发送前已经登陆成功。测试了而且更换了当前目录,也没有返回错误
傲雪星枫 2015-12-31
  • 打赏
  • 举报
回复
ftp_pasv() 只能在 FTP 登录成功后方可调用,否则会失败。 你先确定FTP是否登录成功。
eightwhells 2015-12-31
  • 打赏
  • 举报
回复
不要沉那,我等着答案咧

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧