【Ecstore2.0】導出問題解決(未導出或導出文件爲0字節)

若是導出隊列能成功執行(隊列不執行看這裏)可是並未生成文件,那麼緣由大部份多是出在FTP上。php

ECSTORE2.0採用了PHP的FTP模塊,因此先確認你的環境是否安裝了FTP模塊,若是沒有,安裝並在PHP.INI中配置好模組路徑。html

功能文件:\app\importexport\lib\policy\ftp.php ,程序中使用 ftp_nb_put() 異步上傳,這裏告訴你們一個調試方法:在適當的位置加入 logger::info('debug info');  linux

而後查看 /data/logs/queue/日期.php 的日誌輸出,能夠直接ssh用 tail -f  /data/logs/queue/日期.php apache

 

【原理】利用PHP的 tempnam() 函數上傳臨時文件至 服務器的 /tmp目錄,再用 ftp_nb_put() 將文件上傳至FTP服務器。vim

【緣由】有的FTP服務器須要使用被動模式PASV鏈接。服務器

【解決方法】app

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

    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

相關文章
相關標籤/搜索