记一次Thinkphp的坑爹经历

2022-04-02 18:50:58 浏览数 (1)

坑爹现象

使用Thinkphp3.2自带的Ftp类上传文件的时候出现只能创建目录而不能上传文件,上传文件出错,上传文件超时等现象

Ftp.class.php

这个类是用来操作Ftp的,也是Thinkphp3.2自带的一个类

所以。。因为框架自带那就用框架自带的咯!

代码语言:javascript复制
$config = array(
          'maxSize'    =>    3145728,
          'rootPath'   =>    './Uploads/',
          'savePath'   =>    '',
          'pasv'=>true,
          'ssl'=>false,
          'saveName'   =>    'time',
          'exts'       =>    array('jpg', 'gif', 'png', 'jpeg'),
          'autoSub'    =>    true,
          'subName'    =>    array('date','Ymd'),
      );
      $ftpConfig = array(
          'host' => 'xxx',
          'port' => '21',
          'timeout' => 90,
          'username' => 'xxx',
          'password' => 'xxx'
      );

填写完所需的参数后我们来new一个upload出来吧!并且指定上传驱动使用Ftp $upload = new Upload($config,'Ftp',$ftpConfig);

之后再调用一下upload对象的上传方法uploadOne方法来上传一个文件

如果你的Ftp服务器配置了需要被动模式的话那么不出意外你会上传失败

因为Thinkphp自带的Ftp类里面缺少了被动模式的配置,我们需要手动给他添加一下

打开Thinkphp/Library/Think/Upload/Ftp.class.php这个文件

然后我们找到他的login方法,之后在if (ftp_login($this->link, $username, $password))</code>这个条件成立的时候我们给他开启被动模式<code>ftp_pasv($this->link,true);

然后我们再去测试一下,不出意外的话你就已经可以上传成功啦!

希望这个解决办法给同样需要用到这个类的同学一点帮助!

0 人点赞