[php] probleem met verwijderen van bestanden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb opo mijn server een script draaien welke steeds mappen aanmaakt met bestanden.
Dit is nu opgelopen tot zo'n 300mb en dat wil ik dus een kwijt.
Maar als ik nu via ftp inlog of via mijn webinterface dan kan ik die bestanden niet
verwijderen omdat ze door de user apache zijn gemaakt.

Nu heb ik maar een script geschreven waar mee ik de bestanden kan verwijderen maar...
Het zijn er zoveel en via dat script ka ik er maar steeds 1 verwijderen.

Het script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function delete($file) 
{
    chmod($file,0777);
    if (is_dir($file)) 
    {
        $handle = opendir($file);
        while($filename = readdir($handle)) 
        {
            if ($filename != "." && $filename != "..") 
            {
                delete($file."/".$filename);
            }
        }
        closedir($handle);
        rmdir($file);
    } 
    else 
    {
        unlink($file);
    }
}


Hoe verander ik deze functie dat ie de gehele directory msgstore leeg gooit?
Zoeken op GOT helpt niet echt veel en bij php.net daar vind ik ook niet een dergelijke oplossing.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ehm, dat script zou gewoon moeten werken hoor... En anders doe je toch gewoon een chown zodat je FTP-gebruiker de bestanden gewoon kan verwijderen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Als je echt alles weg wilt gooien doe je gewoon simpel en delete je de hele dir dmv een linux commando. Ik zie niet in waarom je perse hiervoor een php functie moet gebruiken. Je doet dit nou ook weer niet dagelijks. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 20-01 18:05
ja idd. of je gooit gewoon je ftp users in dezelfde groep als je apache user, en geeft dan w rights voor de group; doe ik ook wel es

Compromises are for the weak


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Tha_Butcha schreef op 27 mei 2004 @ 13:16:
ja idd. of je gooit gewoon je ftp users in dezelfde groep als je apache user, en geeft dan w rights voor de group; doe ik ook wel es
Bij hosting wil dat vaak niet werken omdat jij geen controle over de users/groups hebt dus dan is het lastig, maar meestal moet het toch geen probleem opleveren. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
probleem is dat het dus bij mijn hosting provider is en ik geen telnet access heb.
Map is dus van user apache en ik ben zelf een andere user

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Verwijderd schreef op 27 mei 2004 @ 13:21:
probleem is dat het dus bij mijn hosting provider is en ik geen telnet access heb.
Map is dus van user apache en ik ben zelf een andere user
Zeggen de php commando's system, exec en passthru je iets ;) zie (hier http://nl2.php.net/manual/nl/function.exec.php )

Dan doe je ongeveer zoiets:
PHP:
1
exec ("rm -rf /een_dir");

Basis unix/linux shell commando's enzo.:
http://www.die.net/doc/linux/man/man1/rm.1.html


offtopic:
Ben wel een beetje roestig maar gaat om het idee ;)

[ Voor 23% gewijzigd door ripexx op 27-05-2004 13:37 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

je kan het script hieronder gebruiken om een gehele directory verwijderen.
Het functie werkt recursief en verwijdert ook alle subdirectories.
:P :*)

function deltree($dir){
$d = dir($dir);
while($f = $d->read() ){
if($f != "." && $f != ".."){
if(is_dir($dir.$f)){
deltree($dir.$f."/");
rmdir($dir.$f);
} // if
if(is_file($dir.$f))
unlink($dir.$f);
}// if
}// while
$d->close();
}

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

ripexx schreef op 27 mei 2004 @ 13:30:
[...]


Zeggen de php commando's system, exec en passthru je iets ;) zie (hier http://nl2.php.net/manual/nl/function.exec.php )

Dan doe je ongeveer zoiets:
PHP:
1
exec ("rm -rf /een_dir");

Basis unix/linux shell commando's enzo.:
http://www.die.net/doc/linux/man/man1/rm.1.html


offtopic:
Ben wel een beetje roestig maar gaat om het idee ;)
Ik denk dat ze enigszins een grens leggen aan welke shell commando's je wel en niet kan gebruiken op een server. Ook leuk als je rm -rf / gaat doen... :P Ik denk dat het het makkelijkste is om ff via PHP de files te chownen voor de juiste gebruiker zodat je er in de FTP client mee kan stoeien.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 27 mei 2004 @ 13:34:
je kan het script hieronder gebruiken om een gehele directory verwijderen.
Het functie werkt recursief en verwijdert ook alle subdirectories.
:P :*)

function deltree($dir){
$d = dir($dir);
while($f = $d->read() ){
if($f != "." && $f != ".."){
if(is_dir($dir.$f)){
deltree($dir.$f."/");
rmdir($dir.$f);
} // if
if(is_file($dir.$f))
unlink($dir.$f);
}// if
}// while
$d->close();
}
Ik kan deze dus goed gebruik om de directory msgstore helemaal leeg te gooien?
Of gooi ik dan ook alle bovenstaande directory's leeg? :)
NMe84 schreef op 27 mei 2004 @ 13:44:
[...]

Ik denk dat ze enigszins een grens leggen aan welke shell commando's je wel en niet kan gebruiken op een server. Ook leuk als je rm -rf / gaat doen... :P Ik denk dat het het makkelijkste is om ff via PHP de files te chownen voor de juiste gebruiker zodat je er in de FTP client mee kan stoeien.
Of is deze manier beter?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 27 mei 2004 @ 13:53:
[...]


Ik kan deze dus goed gebruik om de directory msgstore helemaal leeg te gooien?
Of gooi ik dan ook alle bovenstaande directory's leeg? :)


[...]


Of is deze manier beter?
Wat beter is moet je voor jezelf bepalen. Ikzelf probeer altijd zoveel mogelijk mijn operaties op het filesystem uit mijn scripts te houden, zodat ik zelf controle heb over wat erop staat en wat niet. Niet dat een script onveilig is ofzo, maar ik hou het toch liever gescheiden. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

NMe84 schreef op 27 mei 2004 @ 13:44:
[...]

Ik denk dat ze enigszins een grens leggen aan welke shell commando's je wel en niet kan gebruiken op een server. Ook leuk als je rm -rf / gaat doen... :P Ik denk dat het het makkelijkste is om ff via PHP de files te chownen voor de juiste gebruiker zodat je er in de FTP client mee kan stoeien.
Valt wel mee want een goed opgezet systeem geeft de user van apache echt bijna geen rechten, dus dan kan je als die user nooit in die directory's iets doen. Een beetje hoster heeft dat wel voor elkaar.

Als je niet recursief alle subdirectories wil verwijderen moet je even in de gelinkte man kijken. Verder is het gewoon een kwestie van goed beveiligen want een fout kan je ook maken in je recursieve functie. De optie die NMe84 aan geeft is wel een optie. Doe dan gewoon het volgende:
PHP:
1
exec("chown -r user:groep /dir");

Deze verander recursie de eigenaar van je file van apache naar je ftp user. Je kan dan rustig met je ftp client alles gaan verwijderen. Je moet voor jezelf beslissen wat je wil en welk gebruiksgemak je zoekt. Er zijn iig genoeg scripts en voorbeelden te vinden van php filemanagers en ftp clients enz. ;)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

NMe84 schreef op 27 mei 2004 @ 13:44:
Ik denk dat ze enigszins een grens leggen aan welke shell commando's je wel en niet kan gebruiken op een server. Ook leuk als je rm -rf / gaat doen... :P Ik denk dat het het makkelijkste is om ff via PHP de files te chownen voor de juiste gebruiker zodat je er in de FTP client mee kan stoeien.
Sinds wanneer kan een normale user "rm -rf /" doen?
En als een user (zeker een user die voor een webserver wordt gebruikt) de eigenaar van files kan veranderen gok ik dat er iets mis is met je security :X
Pagina: 1