(DBサーバー) 192.168.1.110
(WEBサーバー) 192.168.1.100
の2つのサーバーがあります。CentOS7です。
DBサーバーで作成したCSVファイル群(&一部PHPファイル)を圧縮したtar.gz(csv.tar.gz)ファイルを下記のPHPを通じてWEBサーバーにFTPしました。
その後、
tar xvfzP csv.tar.gz -C /home/example/public_html/
の形で解凍したところ、
home/home/example/csv/
home/home/example/csv/reprace1.php
tar: Skipping to next header
gzip: stdin: invalid compressed data--format violated
tar: Child returned status 1
tar: Error is not recoverable: exiting now
というエラーが出て解凍出来ません。
このFTP用PHPファイルを使用せず、普通にファイルをダウンロード&アップロードして
tar xvfzP csv.tar.gz -C /home/example/public_html/
をすると、解凍が可能です。
この送信用PHPファイルに問題があるようですが、問題個所を見つけられません。
ご教示いただきたくお願いいたします。
php
1<?php 2$ftp_server = '192.168.1.100'; 3$ftp_port = 21; 4$ftp_user_name = 'example'; 5$ftp_user_pass = 'password'; 6 7// 元のサーバー の送付元のファイル場所 8$ftp_send_file = '/home/example/public_html/put_server/csv.tar.gz'; 9 10// 送付先サーバー の送付先のファイル場所 11$ftp_remote_file = '/home/example/public_html/csv.tar.gz'; 12 13// FTPサーバへ接続する 14$conn_id = ftp_connect($ftp_server, $ftp_port); 15if($conn_id == false){ 16 echo "FTPサーバへの接続失敗"."\n"; 17 exit(); 18} 19 20// ユーザー名とパスワードでログインする 21$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 22if($login_result == false){ 23 echo "FTPサーバへのログイン失敗"."\n"; 24 // 接続を閉じる 25 ftp_close($conn_id); 26 exit(); 27} 28 29//パッシブモードに設定 30ftp_pasv($conn_id, true); 31 32// ファイルをアップロードする 33if (ftp_put($conn_id, $ftp_remote_file, $ftp_send_file, FTP_ASCII)) { 34 echo "UPLOAD 成功"."\n"; 35} else { 36 echo "UPLOAD 失敗"."\n"; 37} 38 39// 接続を閉じる 40ftp_close($conn_id); 41 42?>
CHERRYさんのご指摘にあわせ、ftp_putをftp_binaryに代替えしてみました。
下記のように修正しましたが、
HTTP request sent, awaiting response... 500 Internal Server Error
となります。
php
1 2<?php 3$ftp_server = '192.168.1.100'; 4$ftp_port = 21; 5$ftp_user_name = 'example'; 6$ftp_user_pass = 'password'; 7 8// 元のサーバー の送付元のファイル場所 9$ftp_send_file = '/home/example/public_html/put_server/csv.tar.gz'; 10 11// 送付先サーバー の送付先のファイル場所 12$ftp_remote_file = '/home/example/public_html/csv.tar.gz'; 13 14// FTPサーバへ接続する 15$conn_id = ftp_connect($ftp_server, $ftp_port); 16if($conn_id == false){ 17 echo "FTPサーバへの接続失敗"."\n"; 18 exit(); 19} 20 21// ユーザー名とパスワードでログインする 22$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 23if($login_result == false){ 24 echo "FTPサーバへのログイン失敗"."\n"; 25 // 接続を閉じる 26 ftp_close($conn_id); 27 exit(); 28} 29 30//パッシブモードに設定 31ftp_pasv($conn_id, true); 32 33// ファイルをアップロードする 34if (ftp_binary($conn_id, $ftp_remote_file, $ftp_send_file, FTP_ASCII)) { 35 echo "UPLOAD 成功"."\n"; 36} else { 37 echo "UPLOAD 失敗"."\n"; 38} 39 40// 接続を閉じる 41ftp_close($conn_id); 42 43?> 44 45
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/29 13:39
2018/07/29 21:36
2018/07/30 00:41
2018/07/30 06:10
2018/07/30 12:16