PHP Upload FTP驱动 ftp_put 函数上传失败问题

2台服务器,一台做ftp服务器,一台做web服务器。

我使用的thinkphp3.2得Upload类,使用了上传FTP驱动,但是每次都说文件保存失败。

我寻找答案,异步和同步都测试,都不行,远程端/tmp/ 和ftp目录也有777权限。

Thinkphp应该很成熟,后面我在官方的文档找到了一些答案,其中有解释模式

ftp服务器主动模式,ftp服务器被动模式,我使用 ftp_pasv($this->link,true); 切换到被动模式,客户端就可以顺利上传文件了。

下面是解决方案

Upload/Driver/Ftp.class.php sava函数

public function save($file, $replace=true) {
        $filename = $file['rootPath']. $file['savepath'] . $file['savename'];

        /* 不覆盖同名文件 */
        // if (!$replace && is_file($filename)) {
        //     $this->error = '存在同名文件' . $file['savename'];
        //     return false;
        // }

        ftp_pasv($this->link,true);
        ftp_pwd($this->link);
        $filename=$file['savename'];
        if (!ftp_put($this->link, $filename, $file['tmp_name'],FTP_ASCII)) {
            $this->error = '文件上传FTP错误!';
            return false;
        }
        return true;
    }



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 图片更清晰,文字在最下面 FTP是TCP/IP的一种应用,使用TCP而不是UDP,所以是可靠的,面向连接的。 FT...
    停下浮躁的心阅读 5,677评论 0 4
  • FTP服务概述 简单FTP构建及访问 VSFTP服务基础 用户禁锢、黑白名单 FTP并发及带宽限制 一、FTP服务...
    紫_轩阅读 12,323评论 3 25
  • ftp 文件传输协议 跨平台 上传下载文件 vsftpd 工具:非常安全的文件传输协议;默认的命令端口21号,数据...
    柒夏锦阅读 9,544评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • FTP协议简介FTP软件介绍vsftpd服务简介vsftpd配置vsftpd虚拟用户 一、FTP协议简介 (一)特...
    哈喽别样阅读 4,671评论 0 1