Avatar billede scarlett Nybegynder
04. marts 2009 - 12:55 Der er 9 kommentarer

Upload images på server med Safe_mode

Følgende spørgsmål er stillet til Surftown.

Kan i hjælpe mig med følgende problem med upload af billeder.

Hvis jeg uploader billederne med et php script, får filen ikke de rette rettigheder til at kan vises. Serveren sætter automatisk user og group på filen til root. Upload filen ligger i en admin mappe der kræver login. Dette foregår også ved et php script. Mappen billeder som billederne uploades til er cdmod sat til 777.

Hvis billederne uploades vha ftp sætter serveren automatisk user og group på filen til bruger og de kan godt vises.

Umildbart ser det ud til at de 2 php script virker, men login er forskellig ved online og ftp upload. Ved ftp er login server bestemt og ved online er login bestemt ved et php script til admin mappen. Er det det der giver problem i forhold til rettigheder på serveren eller hvad?

Surftown's svar

Grunden til at du ikke kan uploade via PHP scriptet er fordi at vi har Safe_mode slået til på vores webhoteller. dette gør at du ikke kan oprette mapper og uploade dertil. Det script du bruger laver en midlertidig fil, og vil derefter kopiere filen fra den "midlertidige" destination og over til billedemappen, og det er denne kopiering der forhindrer scriptet i at uploade.

Den eneste løsning er derfor at finde et script som uploader direkte til billedemappen, og altså ikke laver denne midlertidige fil.

Kan i hjælpe medat tilrette sctipt så upload sker direkte i mappen ../billeder uden en midlertidig destination

Mit script ser således ud.

upload.php



<?php
if (isset($_FILES['filnavn'])) {
print "Fil, der er blever overført: {$_FILES['filnavn']['name']}<p>\n";
$query = "INSERT INTO billeder SET billednavn='".$_FILES['filnavn']['name']."'";
    $Result1 = mysql_query($query, $horsfeldt) or die(mysql_error());

}

if (isset($_FILES['filnavn'])) {
$tempfile = $_FILES['filnavn']['tmp_name'];
$destination = "../billeder/{$_FILES['filnavn']['name']} ";
copy($tempfile, $destination);

}

?>

<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
  Fil der skal overf&oslash;res.
  <label>
  <input name="filnavn" type="file" id="filnavn" />
  </label>
  <br />
  <br />
  <br />
  <label>
  <input type="submit" name="Submit" value="Overf&oslash;r" />
  </label>
</form>
Avatar billede jakobdo Ekspert
04. marts 2009 - 13:02 #1
Prøv at brug move_uploaded_file() og ikke copy()
Avatar billede scarlett Nybegynder
04. marts 2009 - 13:45 #2
Det hjalp ikke. Det opfører sig på samme måde filen kan ikke vises.
Avatar billede jakobdo Ekspert
04. marts 2009 - 13:51 #3
Filen kan ikke vises, men den uploades altså korrekt ?
Avatar billede jakobdo Ekspert
04. marts 2009 - 14:36 #4
Og ud over det, svaret fra surftown er helt væk.
Filen vil altid blive smidt i en temp fil og herefter flyttet videre til den endelige destination.
Avatar billede jakobdo Ekspert
04. marts 2009 - 14:44 #5
Og jeg har netop lige teste denne kode: http://www.eksperten.dk/guide/1098

På et surftown hotel, alt virker fint fint.

Jeg lavede følgende:

RODEN
- DIR - admin - FORMULAR
- DIR - upload - chmod - 777

Jeg rettede dog $uploadDir til:
$uploadDir = './../upload/';

men så virker koden ihf.
Avatar billede scarlett Nybegynder
04. marts 2009 - 14:48 #6
Ja for mig ser det ud til at det fungerer korrekt. Filen bliver lagt i mappen billeder, navnet kommer i databasen, men hvis jeg ønsker at vise billedet er det et rødt kryds.
Avatar billede jantzen88 Nybegynder
04. marts 2009 - 14:48 #7
Har selv surftown og bruger osse selv et upload script.. og det kan man sagtens, osse selv om safe_mode er på.

og ville osse forslå dig at bruge move_uploaded_file().

Her er min php kode

<?php

$uploaddir = '../upload/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "Filen er uploadet\n";
} else {
    echo "Fejl\n";
}

?>
Avatar billede scarlett Nybegynder
04. marts 2009 - 14:49 #8
jeg ser lige på dit forslag
Avatar billede jakobdo Ekspert
04. marts 2009 - 14:52 #9
Det med det røde kryds, kan det ikke bare skyldes du måske henviser til en forkert sti ?

Hvad hvis du prøver med:

http://dinside.dk/billeder/billedets_navn.endelse ???
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink

Nextway Software A/S

Product Configuration Specialist

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret