- ベストアンサー
解凍した内容を別のファイル名で保存
- 圧縮ファイルを解凍して別のファイルに保存するスクリプトを考えています
- 指定された圧縮ファイルを解凍せずに保存するスクリプトの方法を知りたいです
- 解凍した内容を指定したファイルに書き込む方法を教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>touch("./aaa/bbb.xml"); >$lines = gzfile("$filename.gz"); >$lastfile = fopen("./aaa/bbb.xml", "rwb+"); >$lastview = fwrite($lastfile,$lines); >fclose($lastfile); >closedir($dir); >↓ >結果:Array gzfile()はgzファイル全体を配列に読み込むので、Arrayとなって当たり前です。 > $lastview = fwrite($lastfile,$lines); を foreach($lines as $line){ $txt .= $line; } $lastview = fwrite($lastfile,$txt); とすれば良いのではないでしょうか?
その他の回答 (1)
- php504
- ベストアンサー率42% (926/2160)
system()で帰ってくるのは実行結果の最後の行だけになります。 shellにそのままファイルを作らせるのはどうでしょう system(escapeshellcmd($decompress) . "> ./aaa/bbb.xml"); 他にはpopenを使う方法もあります。 $in = popen(escapeshellcmd($decompress), "r"); セキュリティ面からはshellコマンドを使うよりgzopenやgzfileなどの関数を使ったほうが好ましいかもしれません。Safe modeがOnでも使えますし。 http://jp.php.net/manual/ja/ref.zlib.php
お礼
私の無知により直接の解決には出来ませんでしたが、ご提案していただいたことは非常に助かりました。 本当に感謝しております。ありがとうございました。
補足
ご解答ありがとうございます。 ご提案いただいた3種類の方法を試したところ下記の3種類の結果になりました。私のやり方がまずいと思うのですが、どれか一つでいいのでどこがまずいかご教授願います。 ========== touch("./aaa/bbb.xml"); $lines = gzfile("$filename.gz"); $lastfile = fopen("./aaa/bbb.xml", "rwb+"); $lastview = fwrite($lastfile,$lines); fclose($lastfile); closedir($dir); ↓ 結果:Array $decompress = "/usr/bin/gzip -dc $filename.gz"; system(escapeshellcmd($decompress) . "> ./aaa/bbb.xml"); closedir($dir); ↓ 結果:0バイト touch("./aaa/bbb.xml"); $decompress = "/usr/bin/gzip -dc $filename.gz"; $result = popen(escapeshellcmd($decompress), "r"); $lastfile = fopen("./aaa/bbb.xml", "rwb+"); $lastview = fwrite($lastfile, $result); fclose($lastfile); ↓ 結果:Resource id #5 ==========
お礼
あっさり解決いたしました。 私の無知度を考慮していただき、ダイレクトなアドバイスありがとうございます。