3

必要な答えが見つからないので、私が何を求めているのか理解していただければ幸いです。

(リモートWebサイトから)tar.gzファイルを開き、ファイルを読み取り、Webサイトでこれらのファイルをコピー/置換できる必要があります。私はこのコード(および他の無数のコード)を試してきました:

$zipFile= 'http://awebsite.com/file.tar.gz';
$dir = 'myfolder';
$zp = @gzopen($zipFile, "r");
$fp = @fopen($dir, "w");
while(!@gzeof($zp)) {$string = @gzread($zp, 4096); @fwrite($fp, $string, strlen($string));}
@gzclose($zp);
@fclose($fp);

すべてが異なる種類のエラーを思い付くようです。zipファイルは読めるようですが、実際にはコンテンツを自分のWebサイトに保存していません。

よろしくお願いします。

クリトン

4

2 に答える 2

2

解凍して.gzサフィックスを効果的に削除することに加えて、tarファイル形式を解釈して.tarサフィックスを効果的に削除する必要もあります。これを行う最も簡単な方法は、tarプログラム自体を使用することです。プルしているものをtarにパイプし、更新するディレクトリで実行します。tarのマニュアルページを読んで、ファイルを更新する方法の適切なオプションを確認してください。(多くの選択肢があります。)

于 2012-04-30T02:27:15.193 に答える
1

これを試して:

<?php
$zipFile= 'http://awebsite.com/file.tar.gz';
$dir = 'myfolder';
$zp = @gzopen($zipFile, "r");
$fp = @fopen("temp.tar", "w");
while(!@gzeof($zp)) {$string = @gzread($zp, 4096); @fwrite($fp, $string, strlen($string));}
@gzclose($zp);
@fclose($fp);
exec('tar xf temp.tar --overwrite --directory='.$dir);
?>


アップデート:

一時ファイルを使用せずtar、gzip解凍自体を処理するソリューションを次に示します。

<?php
$zipFile= 'http://awebsite.com/file.tar.gz';
$dir = 'myfolder';
$zp = @fopen($zipFile, "r");
$fp=popen('tar xzf - --overwrite --directory='.$dir,'w');
while(!@feof($zp)) {$string = @fread($zp, 4096); @fwrite($fp, $string, strlen($string));}
@fclose($zp);
@fclose($fp);
?>
于 2012-04-30T03:51:17.133 に答える