【Ecstore2.0】导出问题解决(未导出或导出文件为0字节)

简介: 如果导出队列能成功执行(队列不执行看这里)但是并未生成文件,那么原因大部份可能是出在FTP上。 ECSTORE2.0采用了PHP的FTP模块,所以先确认你的环境是否安装了FTP模块,如果没有,安装并在PHP.INI中配置好模组路径。

如果导出队列能成功执行(队列不执行看这里)但是并未生成文件,那么原因大部份可能是出在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 文件

    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

        <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

 

关于导入导出的问题解决:http://www.cnblogs.com/vmax/p/3699462.html

 

 

相关文章
|
JSON Java 应用服务中间件
利用esaypoi自定义Excel表格模板导入与导出表单数据
今天工作中又遇到了excel导出数据的功能,在这里我将自己自定义的Excel模板和相关的代码拿出来,解释一下如何进行操作,以便日后能够方便的进行功能开发,提高效率。
717 0
|
JSON 数据格式
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(一)
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(一)
143 0
|
存储 数据处理 Python
批量读取docx文件中的excel表格格式数据
批量读取docx文件中的excel表格格式数据
101 6
|
11月前
|
数据库管理
sqlite读取文件初始库表
sqlite读取文件初始库表
48 1
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(二)
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(二)
124 0
|
前端开发 JavaScript 容器
vue导出excel表格-后端返回blob流文件,前端接收并导出(处理导出以后打开文件损坏问题)
vue导出excel表格-后端返回blob流文件,前端接收并导出(处理导出以后打开文件损坏问题)
897 0
jeasypoi导入excel,数字列导入失败解决办法
jeasypoi导入excel,数字列导入失败解决办法
431 0
jeasypoi导入excel,数字列导入失败解决办法
|
关系型数据库 数据库 RDS
阿里云ppas 逻辑备份(导出)、还原 - 导出到本地、从本地导入
标签 PostgreSQL , ppas , enterprisedb , edb 背景 阿里云RDS PPAS是PG的企业版本,兼容PG同时兼容Oracle。 由于ppas做了很多兼容ORACLE的工作,所以元数据与PG社区版本有很大不同,那么用户在使用RDS PPAS时,如果有导出、导入的需求,请使用EDB 的pg_dump, pg_restore,请不要使用pg社区版本的pg_dump与pg_restore导出导入。
1401 0