PHP zip file wordt niet gecreerd

Pagina: 1
Acties:
  • 373 views

Onderwerpen


Verwijderd

Topicstarter
Hallo iedereen,
Ik heb een stukje code geschreven dat normaal gezien een zip bestandje zou moeten creeren en downloaden. Bij het runnen in de browser gebeurt er echter niets. Ik krijg geen error melding, en er wordt geen zip bestand gedownloaded. Van de lange if-statement in het begin ben ik zeker dat er niets aan de hand is.

Op het gebied van php programming ben ik vrij onervaren. Het is dus best mogelijk dat ik een banale fout gemaakt heb die jullie er blindelings uithalen.

De PHP code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
if (isset($_POST['action']) && $_POST['action']==='ophalen' && isset($_POST['taak_naam'])) {
    //ophalen is set
    
    $errors=array();
    //set var
    $taak_naam = $_POST['taak_naam'];
    //check if $taak_naam exists
    $dir       = "fileserver/{$taak_naam}/ingediend";
    if (file_exists($dir)) {
        //file exists
        
        //create a zip file
        $zip_name = $taak_naam."_ophalen.zip";
        
        $zip = new ZipArchive();
        if ($zip->open($zip_name, ZIPARCHIVE::CREATE) !== TRUE) {
            // ERROR Opening zip file to load files
            
        }
        
        //check the dir
        $files = scandir($dir);
        
        //unset first two
        unset($files[0], $files[1]);
        
        //add files into zip
        
        foreach ($files as $file) {
            $zip->addFile("fileserver/$taak_naam/ingediend/{$file}", $file);
        }
        
        //close zip     
        $zip->close();
        if (file_exists($zip_name)) {
            echo "exists";
            // push to download the zip
            header('Content-type: application/zip');
            header('Content-Disposition: attachment; filename="' . $zip_name . '"');
            readfile($zip_name);
            // remove zip file is exists in temp path
            unlink($zip_name);
            
        }
        
    } else {
        //dir doesn't exist 
        $errors[]="Deze taak bestaat niet!";
        
    }
    
} else {
    //if ophalen is false   
    
}

?>


Alvast bedankt :)

  • _trickster_
  • Registratie: Mei 2005
  • Laatst online: 10-09 21:16
Heb je Errorlogging uitstaan,
PHP laat namelijk standaard in productie omgevingen een Errors zien, die logt hij wel in de Webserver logs.

Eventueel kan je bovenaan je script even het volgende plaatsen om PHP geforceerd errormeldingen te laten zien ( na de <?php natuurlijk )
Dan nog eens kijken of je nog steeds niks ziet
code:
1
2
error_reporting(E_ALL);
ini_set('display_errors', '1');

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Lijn 9 lijkt me apart met die { }. Verder, heb je wel de zip ext voor php aanstaan? Check dat in je ini of echo phpinfo even.
Daarnaast gok ik dat je dit script hebt opgezocht, maar hou je rekening met de *nix paths vs winpaths? ( \ en / dus). Als laatste moeten je chmods ook aanwezig zijn

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zou eigenlijk graag eens hebben dat je onze Quickstart hanteert bij 't openen van een topic en laat zien wat je zélf geprobeerd hebt i.p.v. ons telkens als helpdesk te gebruiken. Met een klein beetje debuggen (zie Debuggen: Hoe doe ik dat?) en hierboven genoemde zaken moet je al een heel eind kunnen uitvogelen rond welke regel(s) het fout gaat en je daar dan op toespitsen. Mocht je er dan nog niet uit komen, open dan gerust een nieuw topic, maar laat dan wel even zien wat je zélf al geprobeerd/gezocht/gevonden hebt, wat er uit je debug-sessie kwam etc. Dan hoeven wij niet steeds naar een lap code te gaan staren met aleen een simpele een "hij doet 't niet" ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.