PDA

Bekijk Volledige Versie : PHP5 en permissions na upload



MartinM
31/07/07, 23:27
Ik heb het volgende probleempje:

in mijn webroot staat een directory, met de rechten op 777
Daarin worden bestanden geupload die met Createzip ingepakt moeten worden.

De bestanden zijn na het uploaden echter allemaal op 644 gechmod.

Hoe zorg ik ervoor dat de bestanden bij het uploaden rechten krijgen waardoor ze wel bewerkt kunnen worden?

Cyberdevil
31/07/07, 23:31
http://be.php.net/manual/nl/function.chmod.php ?

MartinM
31/07/07, 23:53
Cyberdevil bedankt voor je snelle reactie maar helaas, nog niet direct de oplossing voor mijn probleem.

hieronder het stukje script waar het om draait:


$createZip = new createZip;

$createZip -> addDirectory("$SITENZBDIR");

$fileContents = file_get_contents($SITENZBDIR."/".$nzbfilename);
$createZip -> addFile($fileContents, "$SITENZBDIR."/".$nzbfilename");


$fileName = "$nzbfilename.zip";
chmod ("$nzbfilename.zip", 0755)
$fd = fopen ($fileName, "wb");
$out = fwrite ($fd, $createZip -> getZippedfile());
fclose ($fd);

$formove = file_get_contents($fileName);
file_put_contents($SITENZBDIR."/".$fileName, $formove);
@unlink($fileName);

Wanneer ik dit probeer komt de hele upload niet door, wanneer ik de rode regel weglaat, loopt het vast op ;

Warning: fopen(3144.nzb.zip) [function.fopen]: failed to open stream: Permission denied in /var/www/web5/web/takenzb.php on line 536

ik blijf er dus tegenaan lopen dat het CreateZip-proces een via http geupload bestand aantreft dat op 644 gechmod staat en daardoor niet voldoende rechten heeft om van dat bestand zelf een .zip te maken.

Nog enig idee??

Cyberdevil
01/08/07, 00:08
Normaal. Eerst het script weg schrijven en dan pas een chmod doen.
Nu doe je een chmod op een plaats waar het niet mag.

Correct me if I'm wrong.

MartinM
01/08/07, 00:11
maar ik zal die $nzbfilename.zip toch eerst op 755 moeten zetten om er iets mee te doen? (Ik post niet voor niets in het Beginnersforum ;) )

Citruz.
01/08/07, 00:49
maar ik zal die $nzbfilename.zip toch eerst op 755 moeten zetten om er iets mee te doen? (Ik post niet voor niets in het Beginnersforum ;) )

chmod 644 wijzigt de rechten naar schrijven en lezen voor de eigenaar, lezen voor de rest
chmod 755 wijzigt de rechten naar schrijven, lezen en uitvoeren voor de eigenaar, lezen en uitvoeren voor de rest.

Met 644 zou je het bestand dus prima moeten kunnen bewerken, mits de eigenaar van het bestand dezelfde is als de user waaronder je script draait. Door de rechten naar 755 te wijzigen maak je het bestand alleen maar uitvoerbaar.

Omdat je een 'Permission denied'-foutmelding krijgt lijkt mij dat de eigenaar van het bestand niet overeenkomt met de user die het script uitvoert.

MartinM
01/08/07, 01:24
Citruz.,

Je hebt volkomen gelijk!!

De Dir waar ze in geplaats worden sta ik als eigenaar voor, de bestanden die er in geplaatst worden staan met www-data als eigenaar.

Nu mijn hamvraag natuurlijk: Hoe pas ik dat aan?

Citruz.
01/08/07, 07:18
Wanneer je het via je script wil doen heb je de volgende opties:

1) De bestanden via php upbloaden mbv een simpel formuliertje. www-data is dan de eigenaar van het bestand.
2)De FTP-functies van PHP gebruiken om in te loggen en de bestanden via FTP te chmodden naar 666 of 777.

Upload je het bestand eenmalig of wordt dit gedaan door iemand met een beetje verstand, dan kan je ook tijdens het uploaden de rechten wijzigen. In je script hoef je dan niets aan te passen.

http://nl3.php.net/manual/en/ref.ftp.php