Unlink permission denied
Warning: unlink(../../Images/Portfolio/123454/Groot) [function.unlink]: Permission denied in C:\wamp\www\Dennis\Classes\Admin\ClsVerwijderProject.php on line 36
dit stukje code hoort erbij:
Code (php)
Heb al een chmod functie aangeroepen... maar werkt niet
Weet iemand een oplossing?
Gewijzigd op 22/06/2011 16:56:27 door Dennis meijer
Echo eens: $Dir.$Entry
Code (php)
1
2
2
Warning: unlink(../../Images/Portfolio/DMDEVELOPMENT/Groot) [function.unlink]: Permission denied in C:\wamp\www\Dennis\Classes\Admin\ClsVerwijderProject.php on line 36
../../Images/Portfolio/DMDEVELOPMENT/Groot../../Images/Portfolio/DMDEVELOPMENT/klein_portfolio.png../../Images/Portfolio/DMDEVELOPMENT/klein_Visitekaartje-achterkant.png../../Images/Portfolio/DMDEVELOPMENT/ontwerp.png../../Images/Portfolio/DMDEVELOPMENT/Preview.png../../Images/Portfolio/DMDEVELOPMENT/preview_Visitekaartje-voorkant.png../../Images/Portfolio/DMDEVELOPMENT/preview_Webdesign.png../../Images/Portfolio/DMDEVELOPMENT/random_preview_Visitekaartje-voorkant.png../../Images/Portfolio/DMDEVELOPMENT/random_preview_Webdesign.png../../Images/Portfolio/DMDEVELOPMENT/rudolfbloeme123ndal.png../../Images/Portfolio/DMDEVELOPMENT/Website JustinGraphics 2.png../../Images/Portfolio/DMDEVELOPMENT/Website JustinGraphics copy.png../../Images/Portfolio/DMDEVELOPMENT/Website-Fishalicious.png
../../Images/Portfolio/DMDEVELOPMENT/Groot../../Images/Portfolio/DMDEVELOPMENT/klein_portfolio.png../../Images/Portfolio/DMDEVELOPMENT/klein_Visitekaartje-achterkant.png../../Images/Portfolio/DMDEVELOPMENT/ontwerp.png../../Images/Portfolio/DMDEVELOPMENT/Preview.png../../Images/Portfolio/DMDEVELOPMENT/preview_Visitekaartje-voorkant.png../../Images/Portfolio/DMDEVELOPMENT/preview_Webdesign.png../../Images/Portfolio/DMDEVELOPMENT/random_preview_Visitekaartje-voorkant.png../../Images/Portfolio/DMDEVELOPMENT/random_preview_Webdesign.png../../Images/Portfolio/DMDEVELOPMENT/rudolfbloeme123ndal.png../../Images/Portfolio/DMDEVELOPMENT/Website JustinGraphics 2.png../../Images/Portfolio/DMDEVELOPMENT/Website JustinGraphics copy.png../../Images/Portfolio/DMDEVELOPMENT/Website-Fishalicious.png
Dat lijkt niet een geweldig goed pad ;-)
Die fotos worden allemaal verwijderd.
Alleen binnen die map is een map genaamd Groot.
En de fotos in die map worden niet verwijderd omdat hij daar geen rechten voor heeft.
Hoe is dit op te lossen?
Je kunt heel veel, maar als je geen rechten hebt kan het niet.
Kun je mij zeggen hoe het dan wel moet?
Maar windows kent wel rechten, rechtermuisknop op de map, eigenschappen en daar ergens staan rechten.
Ok maa rals ik dat nou op de webserver zet? dan kamp ik toch met hetzelfde probleem?
Op je webserver zet je 1 keer de rechten goed. Dat is onderdeel van het instellen van je website.
De rechten op Windows staan haast altijd wel goed.
Het lag eraan dat ik alleen zocht in de images map en daar alle bestanden verwijderde.
Maarja hij zag de map groot ook als een bestand en die kan niet verwijderd worden.
Nu heb ik eerst een controle gedaan dat hij de map groot alle bestanden erin moet verwijderen en daarna die map mag weggooien.
Daarna doet die de rest van de bestanden en nu werkt het.
Bedankt
Heb je daar een recursieve functie voor gemaakt? Of gaat het dan fout als er in groot weer een map staat?
Wat is een recursieve functie als ik vragen mag?
Toevoeging op 23/06/2011 11:56:09:
Dit gebruik ik nu btw:
Code (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
<?php
$Dir1 = '../../Images/Portfolio/'.$Foto->Titel.'/Groot/';
$Delete1 = dir($Dir1);
while($Entry1 = $Delete1->read())
{
if ($Entry1!= "." && $Entry1!= "..")
{
unlink($Dir1.$Entry1);
}
}
$Delete1->close();
rmdir($Dir1);
$Dir = '../../Images/Portfolio/'.$Foto->Titel.'/';
$Delete = dir($Dir);
while($Entry = $Delete->read())
{
if ($Entry!= "." && $Entry!= "..")
{
unlink($Dir.$Entry);
}
}
$Delete->close();
rmdir($Dir);?>
$Dir1 = '../../Images/Portfolio/'.$Foto->Titel.'/Groot/';
$Delete1 = dir($Dir1);
while($Entry1 = $Delete1->read())
{
if ($Entry1!= "." && $Entry1!= "..")
{
unlink($Dir1.$Entry1);
}
}
$Delete1->close();
rmdir($Dir1);
$Dir = '../../Images/Portfolio/'.$Foto->Titel.'/';
$Delete = dir($Dir);
while($Entry = $Delete->read())
{
if ($Entry!= "." && $Entry!= "..")
{
unlink($Dir.$Entry);
}
}
$Delete->close();
rmdir($Dir);?>
Op phptuts.nl is wel een artikel te vinden.
Nogmaals bedankt
bijvoorbeeld
Code (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
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
function cleardir($path)
{
$handler = opendir($path);
if($handler)
{
while($file = readdir($handler))
{
if($file =='.' || $file == '..')
{
//we doen niks
}
else
{
if(is_dir($path.DIRECTORY_SEPARATOR.$file))
{
//dit is het recursieve gedeelte, het roept zichzelf aan. Dit gebeurt alleen als het een map is
cleardir($path.DIRECTORY_SEPARATOR.$file);
}
unlink($path.DIRECTORY_SEPARATOR.$file);
}
}
}
}
?>
function cleardir($path)
{
$handler = opendir($path);
if($handler)
{
while($file = readdir($handler))
{
if($file =='.' || $file == '..')
{
//we doen niks
}
else
{
if(is_dir($path.DIRECTORY_SEPARATOR.$file))
{
//dit is het recursieve gedeelte, het roept zichzelf aan. Dit gebeurt alleen als het een map is
cleardir($path.DIRECTORY_SEPARATOR.$file);
}
unlink($path.DIRECTORY_SEPARATOR.$file);
}
}
}
}
?>
En gebruik absolute paden om problemen als deze te voorkpmen. Zet in een config bestand het absolute pad van je root en gebruik deze variabele om bestanden aan te spreken.