Avatar billede jhjorsal Mester
06. maj 2003 - 14:30 Der er 3 kommentarer og
1 løsning

SAFE MODE

Hej
Jeg har lavet et filoploadning site, som virker lokalt men ikke på mit webhotel der får jeg flg. fejl:

Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 80 is not allowed to access / owned by uid 0 in /home/web/r_s5683/jorsal-maskiner.dk/adm/upload.php on line 52

Efter kontakt med min hoteludbyder har jeg fået forklaret at de ikke kan ændre SAFE MODE da det ville være en alvorlig sikkerhedsbrist og at fejlen er i min kode som ser ud som flg:



<?php

/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}

/*Hvis der er filer, saa uploader vi dem*/
if (isset($_FILES['upfile'])) {
 
  /**
  * Hvor skal filerne uploades til?
  * Husk, at webserveren skal kunne skrive til dette bibliotek
  */
  $sti = "/upfile/";
  $dist = $_SERVER["DOCUMENT_ROOT"] ."$sti"; 
  $konfiguration["upload_bibliotek"] = $sti;

  /* Hvor mange kilobytes maa filerne fylde per styk? */
  $konfiguration["max_stoerrelse"] = "200"; 

  /* hvilke filer må oploades */
  $konfiguration["fil_type"] = "image/pjpeg";
 
  /*Find antallet af filer til upload*/
  for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
    $str1 = $_FILES['upfile']['name'][$i];
    $str2 = ceil(($_FILES['upfile']['size'][$i])/1024);
    $str3 = $_FILES['upfile']['type'][$i];
    if (isset($_FILES['upfile']['name'][$i]) && ($_FILES['upfile']['name'][$i] !="") &&
            ($_FILES['upfile']['type'][$i] == $konfiguration["fil_type"])) {
      if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {
        move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $konfiguration["upload_bibliotek"] . $_FILES['upfile']['name'][$i]);
      }
      else
      {
        echo"Upload til serveren skete ikke!";
      }
      $upfile_path[] = $konfiguration["upload_bibliotek"].$_FILES['upfile']['name'][$i];
    }
    else
    {
    $upfile_path[] = null;     
    }
  }
} 


$sql = "insert into mt
  (nummer, maerke, model, fod, timer, aargang, pris, kommentar, da_ti, pic_1, pic_2, pic_3, pic_4, pic_5)
  values ('$_POST[nummer]','$_POST[maerke]','$_POST[model]','$_POST[fod]','$_POST[timer]','$_POST[aargang]','$_POST[pris]','$_POST[kommentar]', now(),
  '$upfile_path[0]', '$upfile_path[1]', '$upfile_path[2]',
  '$upfile_path[3]', '$upfile_path[4]')";
   

aabn_forbindelse_og_vaelgdb();
sql_spoerg($sql);
luk_forbindelse();   

exit;

?>



(jeg har forsøgt at fjerne det irrelavante som test udskrivelser osv håber ikke jeg har taget for meget.)

min upfile mappe ligger uden for den mappe (jorsal-maskiner.dk) hele sitet ligger i som der er anvist i den beskrivelse webcafe annoncer med, hva går galt?
Håber der er nogen der kan hjælpe
mvh
Johnny
Avatar billede ahv Nybegynder
06. maj 2003 - 14:34 #1
Dette script burde virke selvom safe mode er slået til, så kan du jo udbygge det.


<?php

// Definer stien til dit oploadbibliotek!

$updir = $_SERVER["DOCUMENT_ROOT"]."/upload"; 
?>

<html>
<head>
<title>Untitled Document</title>
<link href="scroll.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#D0D0D0" text="#000000">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">upload</font>
<br><br>
<?php

if (isset($_GET['mode']) && $_GET['mode'] == "upload") {


    if (empty($_REQUEST['fil'])) {
        echo "Du skal vælge en fil";
    }
    else {



        if (move_uploaded_file($_FILES['fil'][tmp_name], $updir."/".$_FILES['fil']['name']) or die("Filen kan ikke uploades prøv igen!")) {
            Echo "Alt OK";
        }
        else {}
       
    }

}

elseif (empty($_GET['mode'])) {
    ?>

    <form action="upload.php?mode=upload" method="post" enctype="multipart/form-data">
    <input type="file" name="fil">
    <br /><br />
    <input type="submit" name="submit" value=" Upload!" >
    </form>

    <?php

}
else {
    echo "Bad guy!";
}
?>

</body>
</html>
Avatar billede erikjacobsen Ekspert
06. maj 2003 - 14:35 #2
Du må ikke skrive
  $sti = "/upfile/";
da det refererer til roden af filsystemet på webhotellet. Du kan skrive
noget i retning af
  $sti = "/home/www/domæne/upfile/";
hvis du kender den fulde sti, eller
  $sti = "upfile/";
som relativ sti til der hvor dit script er.

Dit webhotel har ret i at det er en fornuftig indstilling!
Avatar billede ahv Nybegynder
06. maj 2003 - 14:36 #3
En lille oprydning i scriptet jeg postede:

<?php
$updir = $_SERVER["DOCUMENT_ROOT"]."/upload";  // Definer stien til dit oploadbibliotek!

if (isset($_GET['mode']) && $_GET['mode'] == "upload") {
    if (empty($_REQUEST['fil'])) {
        echo "Du skal vælge en fil";
    } else {
        if (move_uploaded_file($_FILES['fil'][tmp_name], $updir."/".$_FILES['fil']['name']) or die("Filen kan ikke uploades prøv igen!")) {
            Echo "Alt OK";
        } else {
        }
    }
}
elseif (empty($_GET['mode'])) {
    ?>
    <form action="upload.php?mode=upload" method="post" enctype="multipart/form-data">
    <input type="file" name="fil">
    <br /><br />
    <input type="submit" name="submit" value=" Upload!" >
    </form>

    <?php
} else {
    echo "Bad guy!";
}
?>
Avatar billede jhjorsal Mester
07. maj 2003 - 09:13 #4
I har sikkert begge to ret men jeg brugte svaret fra ahv så du får pointene
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