Avatar billede ttopholm Nybegynder
15. januar 2004 - 02:16 Der er 7 kommentarer og
1 løsning

Slette fil i php på linux

jeg har det her script:

<?php
$id = $_REQUEST["id"];
$conn = mysql_connect("localhost", "*****", "*******");
mysql_select_db("yvonne_tc");
$resultat = mysql_query("select * from tc where Id='$id'");


while ($raekke = mysql_fetch_array($resultat)) {







system("rm home/yvonne/public_html/images/". $raekke['Image'] ."");

system("rm home/yvonne/public_html/images/tn/tn_". $raekke['Image'] ."");
$deleteSQL = "DELETE FROM tc WHERE Id='$id'";
mysql_query($deleteSQL);
header("Location: delete.php?msg=Picture deleted");

}
?>

Og vil meget gerne slette filerne når de bliver slettet fra mysql.. har prøvet med det... men det virker ikke.. og mapperne er chmod 777
Avatar billede Slettet bruger
15. januar 2004 - 02:45 #1
Overvej at brug unlink istedet for system()_http://dk.php.net/manual/en/function.unlink.php

Selve filerne skal også have rettigheder, så PHP (typisk kørende som other/www) kan slette dem.
Avatar billede fcknet Nybegynder
15. januar 2004 - 07:00 #2
<?php
$id = $_REQUEST["id"];
$conn = mysql_connect("localhost", "*****", "*******");
mysql_select_db("yvonne_tc");
$resultat = mysql_query("select * from tc where Id='$id'");


while ($raekke = mysql_fetch_array($resultat)) {







unlink("/rm home/yvonne/public_html/images/". $raekke['Image'] ."");

unlink("/rm home/yvonne/public_html/images/tn/tn_". $raekke['Image'] ."");
$deleteSQL = "DELETE FROM tc WHERE Id='$id'";
mysql_query($deleteSQL);
header("Location: delete.php?msg=Picture deleted");

}
?>
Avatar billede xyborx Nybegynder
15. januar 2004 - 10:32 #3
Mon ikke det skulle have været
unlink("/home/yvonne/public_html/images/". $raekke['Image'] ."");
unlink("/home/yvonne/public_html/images/tn/tn_". $raekke['Image'] ."");

istedet for

unlink("/rm home/yvonne/public_html/images/". $raekke['Image'] ."");
unlink("/rm home/yvonne/public_html/images/tn/tn_". $raekke['Image'] ."");

Skulle det optimeres en anelse, kunne man evt bruge
unlink('/home/yvonne/public_html/images/'. $raekke['Image']);
unlink('/home/yvonne/public_html/images/tn/tn_'. $raekke['Image']);
Avatar billede codebase Praktikant
15. januar 2004 - 15:56 #4
ellers prøv med
exec("rm -rf /home/yvonne/public_html/images/". $raekke['Image'] );
Avatar billede Slettet bruger
15. januar 2004 - 16:10 #5
mercur8:

Nej, selve filernes rettigheder er ikke relevant for om man kan slette dem. Det eneste relevante er, at mappen skal have w for den relevante bruger.

ole@workstation:~$ ls -l testfil
-rw-------    1 root    ole            0 2004-01-15 16:07 testfil
ole@workstation:~$ rm testfil
rm: fjern skrivebeskyttet almindelig tom fil 'testfil'? y
ole@workstation:~$ ls -l testfil
ls: testfil: Ingen sådan fil eller filkatalog

Denne fil var i min egen mappe, som jeg naturligvis havde alle rettigheder til, men som det kan ses havde jeg ikke nogen rettigheder på selve filen.
Avatar billede Slettet bruger
15. januar 2004 - 16:12 #6
For nogle situationer kan det måske være relevant med de andre rettigheder på mappen.

Man skal have r på en mappe for at kunne liste filer i den.
Man skal have x på en mappe for at kunne skifte til den.
Avatar billede Slettet bruger
15. januar 2004 - 16:15 #7
Derudover vil jeg skyde på, at det nok er den manglende / i starten af stien, der giver fejlen.

Og det er en meget skidt ide at begynde at køre rm -rf med mindre man er 100% sikker på at der ikke kan komme "snavs" i parameteren.
Avatar billede Slettet bruger
15. januar 2004 - 16:24 #8
sandbox: Ok det viste jeg heller ikke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester