Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

permissies op temp folder met ziparchive

Pagina: 1
Acties:

  • williewonka03
  • Registratie: Augustus 2010
  • Laatst online: 16-06-2024
nou de titel zegt het al, ik probeer een zipfile te maken met de ziparchive class op mijn ubuntu server 12.04 met de laatste apache en php versies. Ik krijg de volgende error terug an de $zip->close() call:
code:
1
zip kon niet weggeschreven worden, errorcode: Failure to create temporary file: Permission denied

Ik heb vervolgens opgezocht welke permissies je temp folder in /tmp en /var/tmp moeten zijn en volgens verschillende googleresultaten moet dit 1777 met eigenaar root zijn. Dit is bij mij idd het geval.
Toch kan mijn ziparchive class geen temp file aanmaken.
Opmerkelijk detail: mijn fileupload script die ook gebruik maakt van temp files werkt uitstekend.

Moet ik nu toch mijn temp folder chown naar www-data maken of is er een andere oplossing hiervoor? ik kan op google niet zo heel veel vinden behalve dat de temp folder op 1777 moet staan wat het staat.

  • Ealanrian
  • Registratie: Februari 2009
  • Laatst online: 22:00
Zonder een stukje van de relevante code word het lastig om te zien wat het probleem is. Maar ik denk dat je vooral kritisch moet kijken naar je pad aangezien het fileupload script wel kan schrijven.

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
De temp folder permissies/ownership moet je niet veranderen, voor het geval dat andere software er dan niet meer bij kan.

Weet je zeker dat het pad voor de temporary file klopt? Misschien probeert je programma het ergens anders weg te schrijven.

Het kan ook zijn dat een file of folder met dezelfde naam, maar van een andere user, al bestaat in de temp folder.
Zie Wikipedia: Sticky bit

Verwijderd

Post wat code.

  • williewonka03
  • Registratie: Augustus 2010
  • Laatst online: 16-06-2024
mijn code (de relevante stukken):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        $zip = new ZipArchive();
        $zipname = generateRandomString(10) . '.zip';
        $downloadmap = $_SERVER['DOCUMENT_ROOT'] . "downloads/";
        if(file_exists($downloadmap.$zipname)) {        
                unlink ($downloadmap.$zipname);         
        }
        if ($zip->open($downloadmap . $zipname, ZIPARCHIVE::CREATE) != TRUE) {
                die ("Could not open archive");
        }
...
       foreach($_GET['ID'] as $id)
       {
...
            $filepath = $_SERVER['DOCUMENT_ROOT'] . 'files/' . $data['map'] . '/' . $data['naam'];
            
            if(!$zip->addFile($filepath, $data['naam']))
            {
                die("error bij het toevoegen van bestanden aan zip");
            }
        }
        if(!$zip->close())
        {
            die("zip kon niet weggeschreven worden, errorcode " . $zip->status);
        }

zoals je ziet geef ik nergens een temp locatie op, alleen de locatie waar de zip heen moet. als ik deze code in wamp localhost draai dan werkt het perfect.
de ... stukjes zijn trws database registraties en een paar verificaties of je wel genoeg rechten hebt etc.

EDIT: de tmp folder is verder leeg trws dus het kan geen fout zijn dat er al zoiets met die naam bestaat. zowiezo creeër ik random namen.

[ Voor 5% gewijzigd door williewonka03 op 22-09-2013 14:12 ]


  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Misschien dat je webserver geen schrijf rechten heeft in $downloadmap
Kijk ook even of sys_get_temp_dir() wel de juiste waarde geeft.

[ Voor 84% gewijzigd door Ploink op 22-09-2013 14:44 ]


  • williewonka03
  • Registratie: Augustus 2010
  • Laatst online: 16-06-2024
Ploink schreef op zondag 22 september 2013 @ 14:33:
Misschien dat je webserver geen schrijf rechten heeft in $downloadmap
Kijk ook even of sys_get_temp_dir() wel de juiste waarde geeft.
ok net gechecked en het antwoord is ja bij beide dingen. de www-data group is eigenaar van de map en sys_get_temp_dir geeft gewoon netjes /tmp terug. Ik snap er niks van.

  • Sendy
  • Registratie: September 2001
  • Niet online
Heb je ook de tips in punt 1 en 4 van http://php.net/manual/en/ziparchive.close.php gevolgd?

  • williewonka03
  • Registratie: Augustus 2010
  • Laatst online: 16-06-2024
jazeker, daar was ik achter gekomen bij het maken van dit script op mijn localhost. daar werkt het allemaal perfect.

  • williewonka03
  • Registratie: Augustus 2010
  • Laatst online: 16-06-2024
Niemand een idee? ik snap er echt niks van. in de php logs staat ook niks.
Pagina: 1