如果导出队列能成功执行(队列不执行看这里)但是并未生成文件,那么原因大部份可能是出在FTP上。

ECSTORE2.0采用了PHP的FTP模块,所以先确认你的环境是否安装了FTP模块,如果没有,安装并在PHP.INI中配置好模组路径。

功能文件:\app\importexport\lib\policy\ftp.php ,程序中使用 ftp_nb_put() 异步上传,这里告诉大家一个调试方法:在适当的位置加入 logger::info('debug info');

然后查看 /data/logs/queue/日期.php 的日志输出,可以直接ssh用 tail -f  /data/logs/queue/日期.php

【原理】利用PHP的 tempnam() 函数上传临时文件至 服务器的 /tmp目录,再用 ftp_nb_put() 将文件上传至FTP服务器。

【原因】有的FTP服务器需要使用被动模式PASV连接。

【解决方法】

  修改 \app\importexport\lib\policy\ftp.php 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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']);
        $this->bb=ftp_login($this->conn,$this->ftp_server['name'],$this->ftp_server['pass']);
         
    }
    if($this->ftp_server['pasv']=='true'){
        ftp_pasv($this->conn,$this->ftp_server['pasv']); //vmax 开启被动模式
    }
     
    $this->cd($this->ftp_server['dir']);
}

  修改 \app\importexport\view\admin\ftp.html

1
2
3
4
<p style="margin:20px 0"><{t}>被动模式(PASV):<{/t}>
  <input type="radio" name="pasv" value="true" <{if $ftp_server.pasv=='true'}>checked <{/if}>>开启
  <input type="radio" name="pasv" value="false" <{if $ftp_server.pasv=='false'}>checked <{/if}>>关闭       
</p>

  懒一点的话,就只在FTP.PHP文件中加入 ftp_pasv($this->conn,true); 吧!

  最后附上我的FTP模块安装记录,供新手参考:

  841  cd lanmp/lanmp/php-5.3.27/ext/ftp
846 phpize
847 ./configure -with-php-config=/www/wdlinux/php/bin/php-config
848 make
849 make install
850 ll /www/wdlinux/apache_php-5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
851 vim /www/wdlinux/etc/php.ini
852 service httpd restart

最新文章

  1. day21
  2. 使用CallableStatement的用法
  3. TestLink安装全攻略
  4. Fragment官方解析
  5. python 代码片段5
  6. Android真机调试的时候logcat中无法输出调试信息的解决办法
  7. php经典面试题
  8. HDU-2059龟兔赛跑(基础方程DP-遍历之前的所有状态)
  9. windows程序消息机制(Winform界面更新有关)--转
  10. 星级评分条(RatingBar)的功能和用法
  11. 一个不错的windows编程网址
  12. python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性
  13. Android Studio设置快捷键和背景
  14. 全屏slider--swiper
  15. pads&#160;layout 自动打地孔
  16. 浅谈java中的String、StringBuffer、StringBuilder类的区别以及关系
  17. sql语句循环截取字符串
  18. CAN协议,系统结构和帧结构
  19. (转)从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节
  20. TCP 链接 存在大量 close_wait 等待

热门文章

  1. KEIL C51高级编程
  2. Spring boot将配置属性注入到bean类中
  3. 最短路算法模板合集(Dijkstar,Dijkstar(优先队列优化), 多源最短路Floyd)
  4. 5. c++ 内存管理 C/C++ 内存机制
  5. HDU 3016 Man Down (线段树+dp)
  6. DateGradeView分页绑定
  7. 从无到有开发连麦直播技术&lt;转&gt;
  8. iOS_15_通过代码自己定义cell_微博UI
  9. Java经典23种设计模式之结构型模式(一)
  10. angular指令浅谈