Gunzip されたファイルを FTP サーバーからダウンロードしようとしています。
正常にダウンロードされたように見えますが (正しいファイル サイズなど)、コンテンツを抽出すると、データ形式に違反していると表示されて失敗します。
FileZilla などの FTP クライアントを使用して同じファイルを手動でダウンロードし、それを抽出すると、抽出が機能します。これは、ファイルをダウンロードするための PHP が何らかの形で間違っていることを意味します。
これが私のコードです:
$this->_file = 'data.csv.gz';
$this->_directory = DOC_ROOT.'/imports/';
private function _loadFromFtpDataSource($url=null,$username=null,$password=null) {
try {
$conn_id = ftp_connect($url);
$login_result = ftp_login($conn_id, $username, password);
ftp_pasv($conn_id, true);
$handle = fopen($this->_directory . $this->_file, "w");
ftp_fget($conn_id, $handle, $this->_file, FTP_ASCII, 0);
ftp_close($conn_id);
fclose($handle);
} catch (Exception $e) {
$this->status = false;
error_log("Failed to connect to ftp server");
}
}
正しくダウンロードされない理由を誰でも見ることができますか? Gunzip で圧縮されたファイルを FTP 経由でダウンロードする場合、特別な注意が必要ですか?