Avatar billede mysli Nybegynder
12. april 2005 - 23:15 Der er 10 kommentarer og
2 løsninger

Slet filer med unlink

Har lavet følgende funktion:

function fileDelete($id){
    sql_connect();
    $sql = mysql_query("SELECT * FROM ah_downloads WHERE id = '$id'");
    while (mysql_fetch_array($sql)){
       
        if(file_exists($_SERVER['DOCUMENT_ROOT'].$data['dist'])){
            unlink($_SERVER['DOCUMENT_ROOT'].$data['dist']);
            $bes = "DELETE FROM ah_downloads WHERE id = '$id'";
            mysql_query($bes) or die ("mysql fejl: " . mysql_error());
            echo  "Filen er slettet fra serveren";
            exit;
        } else {
        echo "Filen kunne ikke findes";
        exit;
    }
    mysql_close();
}
}

Problemet er, at når jeg kører den, får jeg følgende fejl;

Warning: unlink(/home/web/sth58909) [function.unlink]: Permission denied in /usr/home/web/sth58909/funktioner.php on line 840

Det er til trods for, at mappen har fulde tilladelser.
Avatar billede detox Nybegynder
12. april 2005 - 23:42 #1
Mangler du ikke osse noget i den her linje:

while (mysql_fetch_array($sql)){

måske skulle det være:

while ($data = mysql_fetch_array($sql)){
Avatar billede detox Nybegynder
12. april 2005 - 23:48 #2
Jeg tror du kan nøjes med:

function fileDelete($id){
    sql_connect();
    $sql = mysql_query("SELECT * FROM ah_downloads WHERE id = '$id'");
    $data = mysql_fetch_array($sql);
    if(file_exists($data['dist'])){
        unlink($data['dist']);
        $bes = "DELETE FROM ah_downloads WHERE id = '$id' LIMIT 1";
        mysql_query($bes) or die ("mysql fejl: " . mysql_error());
        echo  "Filen er slettet fra serveren";
        exit;
    } else {
        echo "Filen kunne ikke findes";
        exit;
    }
    mysql_close();
}
Avatar billede barklund Nybegynder
13. april 2005 - 09:57 #3
file_exists() returnerer også true, hvis det er en mappe. Og da $data['dist'] ikke findes får du bare fat i din webrod - altså en mappe. Og denne kan du selvfølgelig ikke unlinke.
Avatar billede mysli Nybegynder
13. april 2005 - 14:08 #4
Hva vil du så foreslå barklund?

Min $data['dist'] indeholder download/<filnavn>. Detox' version virker desværre ikke.
Avatar billede barklund Nybegynder
13. april 2005 - 14:16 #5
Som detox siger, så findes $data slet ikke i dit script - du sætter aldrig $data til at være noget som helst.

Jeg kan kun sige, at detox' løsning ser helt korrekt ud.
Avatar billede detox Nybegynder
13. april 2005 - 21:46 #6
Hvor har du da $data['dist'] fra, hvis det ikke er fra databaseforespørgslen? Du kan jo ikke bruge en variabel i en funktion, der ikke er defineret i funktionen.
Avatar billede mysli Nybegynder
13. april 2005 - 23:41 #7
Det er fra databasen. Så godt den fejl, med $data ikke var sat, det er ændret nu.

Men lige lidt hjælper dette. Får stadig samme fejl.
Avatar billede barklund Nybegynder
13. april 2005 - 23:46 #8
Prøv at skrive:

function fileDelete($id){
    sql_connect();
    $sql = mysql_query("SELECT * FROM ah_downloads WHERE id = '$id'");
    $data = mysql_fetch_array($sql);
    $file = $_SERVER['DOCUMENT_ROOT'].$data['dist'];
    if(is_file($file)){
        unlink($file);
        $bes = "DELETE FROM ah_downloads WHERE id = '$id' LIMIT 1";
        mysql_query($bes) or die ("mysql fejl: " . mysql_error());
        echo  "Filen er slettet fra serveren";
        exit;
    } else {
        echo "Filen kunne ikke findes: ".$file;
        exit;
    }
    mysql_close();
}

--
Morten Barklund
Avatar billede mysli Nybegynder
14. april 2005 - 08:56 #9
Manglede lige en ."/" i $file, men ellers virker det barklund, mange tak:)

Hvis i begge smider et svar, så kan i deles:)
Avatar billede barklund Nybegynder
14. april 2005 - 09:18 #10
Check!
Avatar billede detox Nybegynder
14. april 2005 - 11:45 #11
yes yes
Avatar billede barklund Nybegynder
14. april 2005 - 13:49 #12
Tark for points :)
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