PHP-Ziparchive hinterlassen unvollendete ZIP-DateienPhp

PHP-Programmierer chatten hier
Anonymous
 PHP-Ziparchive hinterlassen unvollendete ZIP-Dateien

Post by Anonymous »

Ich versuche, drei Zip-Pakete mit PHP zu erstellen. Ich führe eine Funktion aus, die ein Verzeichnis kopiert und den Inhalt durchsucht, um jede Datei mit einer Schleife in die ZIP-Datei einzufügen.
Das Problem besteht darin, dass ZipArchive die Dateien beim Abschluss nicht zu schließen scheint.
Was ich am Ende haben möchte, sind drei ZIP-Dateien wie diese:

Code: Select all

Package1.zip
Package2.zip
Package3.zip
Stattdessen erhalte ich so etwas:

Code: Select all

Package1.zip.a012341
Package1.zip.b012342
Package2.zip.a023451
Package2.zip.b023452
Package3.zip.a034561
Package3.zip.b034562
Es ist, als würden die ZIP-Dateien nicht geschlossen und die temporäre Erweiterung nicht entfernt, und es wird versucht, von jeder Datei eine weitere zu erstellen, was auch bei diesen fehlschlägt. Ich erhalte überhaupt keine Fehlermeldung, zumindest nicht die, die ich gesehen habe.
Ich vermute, dass ich in php.ini oder auf meinem Webserver/IIS eine Einstellung ändern muss. Die Dateien, die ich zu erstellen versuche, sind ziemlich groß, irgendwo zwischen 450 und 600 MB.
Das ist meine beste Vermutung, weil ich zwei fast identische Server-Setups habe, auf denen ich den gleichen Code ausprobiert habe. Bei einem von ihnen funktioniert es perfekt, bei dem anderen jedoch nicht. Das beweist, dass mein ZipArchive-Code hier nicht das Problem sein kann (ich habe die Server übrigens nicht eingerichtet, daher bin ich mir nicht sicher, was der Unterschied ist).
Ich habe versucht, das Memory_Limit und die Ausführungszeit in meiner php.ini zu erhöhen. Bei letzterem handelte es sich um ein früheres Problem und ich erhielt eine Meldung, dass die Zeit abgelaufen sei.
Bearbeiten: Die Funktion wurde hinzugefügt.

Code: Select all

function package_site($filepath, &$context) {
$context['message'] = 'Creating package';

// Mac app
$mac_zipfile = 'public://site_export/mac_package.zip';
copy_directory($mac_zipfile, $filepath . '/mac_package.zip', '/.*/');
$files = file_scan_directory($filepath . '/files', '/.*/');

$mac_zip = new ZipArchive();
if($mac_zip->open(drupal_realpath($filepath . '/mac_package.zip')) === true) {
foreach($files as $key => $value) {
$mac_zip->addFile(drupal_realpath($value->uri), 'mac_package.app/Contents/Resources/' . substr(drupal_realpath($value->uri), strlen(drupal_realpath($filepath . '/files')) + 1));
}
} else {
drupal_set_message("Could NOT open mac_package.zip");
}
$mac_zip->close();

// PC app
drupal_unlink($filepath . '/package.zip');
$start_files_path_pc = 'public://site_export/pc_files';
copy_directory($start_files_path_pc, $filepath . '/files', '/.*/');
$pc_files = file_scan_directory($filepath . '/files', '/.*/');

$zip = new ZipArchive();
$res = $zip->open(drupal_realpath($filepath . '/package.zip'), ZipArchive::CREATE);
if ($res === TRUE) {
foreach ($pc_files as $key => $value) {
$zip->addFile(drupal_realpath($value->uri), substr(drupal_realpath($value->uri), strlen(drupal_realpath($filepath . '/files')) + 1));
}
$zip->close();
}

// Create a html package
create_pure_html_package($filepath);

// HTML package
drupal_unlink($filepath . '/html.zip');
$html_files = file_scan_directory($filepath . '/files/site', '/.*/');

$zip_html = new ZipArchive();
$res = $zip_html->open(drupal_realpath($filepath . '/html.zip'), ZipArchive::CREATE);
if ($res === TRUE) {
foreach ($html_files as $key => $value) {
$zip_html->addFile(drupal_realpath($value->uri), substr(drupal_realpath($value->uri), strlen(drupal_realpath($filepath . '/files')) + 1));
}
$zip_html->addFile(drupal_realpath($filepath . '/start.html'), 'start.html');
$zip_html->close();
}

rrmdir(drupal_realpath($filepath . '/files'));
unlink(drupal_realpath($filepath . '/start.html'));
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post