3

サーバー上のフォルダーに含まれているファイルからZipファイルを作成しようとしています。

これが私のコードです:

$zip = new ZipArchive();
$dirArray = array();
$new_zip_file = $temp_unzip_path.'test_new_zip.zip';

$new = $zip->open($new_zip_file, ZIPARCHIVE::CREATE);
if ($new === TRUE) {
    $handle = opendir($temp_unzip_path);
    while (false !== ($entry = readdir($handle))) {
    $dirArray[] = $entry;
    }
    print_r ($dirArray);
    closedir($handle);
} else {
    echo 'Failed to create Zip';
}

$zip->close();

私はPHPに本当に慣れていないので、ネット上で見つけたいくつかの例とともに、PHPマニュアルからこれをつなぎ合わせようとしています。

エントリが配列に追加されていることを確認するために、一時的にそこに配置しprint_rました。これは、将来、残りのzip関数を配置することを計画している場所です。

私の問題は、何も印刷されないことです。そのため、ファイルがzipに追加されているかどうかはわかりません。

私のコードはおそらくすべて間違っているので(私はそうは思わない)、誰かが私を正しい方向に向けることができれば、私は非常に感謝するでしょう。

ありがとう。

4

1 に答える 1

3

コードを少し変更しましたが、問題なくzipファイルが作成されます。これが機能しない場合は、ディレクトリの権限を確認してくださいmydirectory

<pre><?
$temp_unzip_path = './mydirectory/';
$zip = new ZipArchive();
$dirArray = array();
$new_zip_file = $temp_unzip_path.'test_new_zip.zip';

$new = $zip->open($new_zip_file, ZIPARCHIVE::CREATE);
if ($new === true) {
    $handle = opendir($temp_unzip_path);
    while (false !== ($entry = readdir($handle))) {
        if(!in_array($entry,array('.','..')))
        {
            $dirArray[] = $entry;
            $zip->addFile($temp_unzip_path.$entry,$entry);
        }
    }
    print_r ($dirArray);
    closedir($handle);
} else {
    echo 'Failed to create Zip';
}

$zip->close();
?>
于 2013-02-19T20:09:02.437 に答える