Toon posts:

[PHP5] function.rmdir permission denied

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal :)

Klinkt misschien wat noobish maar ik zou echt niet weten waarom ik met mijn php code een permission denied melding krijg...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function rmdir_rf($dirname)
{
    if($dirHandle = opendir($dirname)) 
    {
    chdir($dirname);
    while($file = readdir($dirHandle))
    {
        if($file == '.' || $file == '..') continue; 
        if($is_dir($file)) rmdir_rf($file);
        else unlink($file);
    }
    chdir('/home');
        
    closedir($dirHandle);
    rmdir($dirHandle);
    }
}


De directory rechten heb ik voor het testen op 777 gezet (onder root handmatig). Apache2 draait met het account "www-data" op debian 4.0 etch. Directory owner was van de "ftpuser:ftpgroup" deze heb ik ook gewijzigd naar "www-data:www-data".

En toch kreeg ik onderstaande melding:

Warning: rmdir(/home/www.example.com/) [function.rmdir]: Permission denied in /var/www/login.php on line 15

Wheeelp!

Bij voorbaat dank!

Jeroen

Btw. Ik heb op het forum gezocht naar PHP function.rmdir en vond 2 topics deze verwezen echter alleen naar de functie... Heb ook veel geGoogled, veel oplossingen, maar die van mij zat er helaas niet bij :(

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Je moet de rechten op de onderliggende directory aanpassen, om een directory te kunnen verwijderen moet je namelijk de entry uit de directory waar die directory in staat verwijderen.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Verwijderd

Topicstarter
De waarde die ik in $dirname zet is "/home/www.example.com/".
Dit is ook de directory die ik probeer te verwijderen. In deze directory staat ook nix meer!

Maar als ik het goed lees moet ik dan meer rechten hebben op /home?

Verwijderd

Verwijderd schreef op dinsdag 17 juli 2007 @ 15:21:
De waarde die ik in $dirname zet is "/home/www.example.com/".
Dit is ook de directory die ik probeer te verwijderen. In deze directory staat ook nix meer!

Maar als ik het goed lees moet ik dan meer rechten hebben op /home?
Voer dan eens het volgende uit, en probeer het dan nog eens:
chmod -R 777 /home/www.example.com

En waarschijnlijk had je dat ook nog niet in de gaten, maar in die recursieve functie moet je wel telkens even het pad van de entry concatenaten met de huidige directory aan alle andere functies die je aanroept.
PHP:
1
2
3
if (is_dir ($dirname . '/' . $file))
   // ...
}

[edit]
Dit bovenstaande is onzin aangezien je chdir gebruikt. Dit zou ik in dit geval nooit doen. Er is geen reden om die waarde te veranderen. Ga dus toch maar iets als mijn bovenstaande code gebruiken.

Tipje: gebruik in dergelijke situaties ook realpath, en geef in elke iteratie het volledige pad weer. Dat scheelt een hoop ellende.

[ Voor 10% gewijzigd door Verwijderd op 17-07-2007 15:30 ]


  • igmar
  • Registratie: April 2000
  • Laatst online: 30-11 18:38

igmar

ISO20022

Verwijderd schreef op dinsdag 17 juli 2007 @ 15:11:
Btw. Ik heb op het forum gezocht naar PHP function.rmdir en vond 2 topics deze verwezen echter alleen naar de functie... Heb ook veel geGoogled, veel oplossingen, maar die van mij zat er helaas niet bij :(
Omdat je voor het verwijderen van een dir schrijfrechten moet hebben in de bovenliggende directory, en die heb je schijnbaar niet.

Verwijderd

Topicstarter
Jup :) thanx :)

De dirname + filename van Cheatah was een gouden tip :)
En de apache2 user had idd geen rechten op de bovenliggende dir...

Thanx!
Pagina: 1