Avatar billede s0reje Nybegynder
18. november 2003 - 19:22 Der er 26 kommentarer

Fil-upload med PHP

Hej Eksperten.
Min udbyder tillader ikke brug af move_uploaded_file() funktionen. Er der nogen der kan komme med et simpel styk kode på en alternativ metode til at uploade billedefil via php og en html fil-form, hvor man vælger filen fra!

MvH Søren.

Har prøvet copy() funktionen, men synes ikke rigtig jeg kan finde ud af at bruge den... Et kode ekspempel til denne funktion er heller ikke af vejen :)
Avatar billede googolplex Novice
18. november 2003 - 19:30 #1
Avatar billede s0reje Nybegynder
18. november 2003 - 19:32 #2
Det er lige nøjagtigt den der ikke virker på hotellet.. godt fundet ;)
Avatar billede 7th Praktikant
18. november 2003 - 19:36 #3
Lyder mærkeligt. Prøv lige at smide den fejlmeddelelse du får ved upload af fil. Måske har du glemt at chmode uploadsmappen.
Avatar billede googolplex Novice
18. november 2003 - 19:37 #4
Ja, lyder sandsynligt, det script virker ellers alle steder :P
Avatar billede s0reje Nybegynder
18. november 2003 - 19:38 #5
aha..
Gider en ikke lige vise mig hvordan jeg chmoder uploadsmappen ?
så prøver jeg lige
Avatar billede 7th Praktikant
18. november 2003 - 19:41 #6
Du skal højre-klikke på din uploadsmappe, og sandsynligvis vælge "change attributes". Sandsynligvis står mappen til 755. Dette skal du rette, så der kommer til at stå 777.
Avatar billede s0reje Nybegynder
18. november 2003 - 19:43 #7
Her er fejlen:

Warning: copy(): open_basedir restriction in effect. File(/tmp/phpd9mCrP) is not within the allowed path(s): (/var/www/hotels/) in /var/www/hotels/html/tilfoj_produkt.php on line 47
Avatar billede 7th Praktikant
18. november 2003 - 19:45 #8
Betyder at du ikke har opsat dit script med den "korrekte" sti.
Avatar billede s0reje Nybegynder
18. november 2003 - 19:47 #9
okay
Se her:
først vælger man sit billede i en html form, og så:

$konfiguration["upload_bibliotek"] = "./images";

$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
copy($fra,$til);
Avatar billede 7th Praktikant
18. november 2003 - 19:50 #10
$sti = $_SERVER['DOCUMENT_ROOT']."/sti_til_mappe/";

$fra = $_FILES['billede']['tmp_name'];
$til = $sti.$_FILES['billede']['name'];

move_uploaded_file ($fra , $til) or die ("Filen blev ikke uploaded.");
Avatar billede s0reje Nybegynder
18. november 2003 - 19:56 #11
okay, hør nu her...
Som sagt øverst, skrev jeg at move_uploaded_file() inta fungerer :) De har lukket for dunktionen. Der må da være andre muligheder end den ?
MvH Søren
Avatar billede 7th Praktikant
18. november 2003 - 20:00 #12
Det har jeg altså svært ved at tro på med mindre de direkte har skrevet, move_uploaded_file() er taget ud af funktion. Benyt copy() i stedet for.
Avatar billede s0reje Nybegynder
18. november 2003 - 20:05 #13
hehe.
Jeg tror ikke der er mange webhoteller der tillader de funktioner, da de nemt kan ligge en server ned.
Men jo, jeg ringede over til dem, og de sagde jeg skulle bruge copy() istedet, men det virker jo heller ikke ligefrem, så...
Avatar billede s0reje Nybegynder
18. november 2003 - 20:06 #14
er der nogen mulighed for at definere, hvor tmp filen bliver smidt på serveren, inden man smider den videre til det rigtige dir ?
Avatar billede 7th Praktikant
18. november 2003 - 20:17 #15
Jeg må indrømme, at jeg aldrig har hørt om et webhotel, som plukker en PHP funktion ud af drift. Det er jo ikke for sjov der er sat base directory restriction på. Alle de webhoteller jeg kender til, kan man benytte move_uploaded_file(), men OK så. Lige et øjeblik...

Det er dog denne linie som er "forkert" hos dig $konfiguration["upload_bibliotek"] = "./images";
Avatar billede s0reje Nybegynder
18. november 2003 - 20:25 #16
Det forstår jeg simpelthen ikke, for det hele virker fintfint på min egen webserver... Ingen problemer overhovedet.

Han sagde noget om "safemode" da han fortalte om deres php unix server.
Han sagde det var disabled.
Avatar billede s0reje Nybegynder
18. november 2003 - 20:25 #17
der burde ikke være noget "forkert" i den linje da.
Avatar billede 7th Praktikant
18. november 2003 - 20:28 #18
Jov, det er derfor du får fejlmeddelelsen.

P.S. hvor har du webhotel.
Avatar billede 7th Praktikant
18. november 2003 - 20:36 #19
open_basedir restriction in effect betyder, at du kun kan afvikle scripts på bestemte definerede områder på serveren. Dette har du meget sandsynlig ikke opsat på din lokale server, hvorfor scriptet virker hos dig lokalt.

Sagt med andre ord, stien til din mappe må ikke være relativ, men skal være absolut.

$konfiguration["upload_bibliotek"] = $_SERVER['DOCUMENT_ROOT']."/sti_til_mappe/images/";
Avatar billede 7th Praktikant
18. november 2003 - 20:53 #20
Et gæt.

$konfiguration["upload_bibliotek"] = $_SERVER['DOCUMENT_ROOT']."/html/images/";
Avatar billede s0reje Nybegynder
19. november 2003 - 07:46 #21
Har ptøvet det nu...
Det virker ikke.
Samme fejl.
Tror problemet ligger i at den først flytter billedet over i et tmp fil og derefter til det rigtige sted, og at jeg ikke har tilladelse til at være i det tmp dir...
Avatar billede sukos Juniormester
19. november 2003 - 09:44 #22
Avatar billede s0reje Nybegynder
19. november 2003 - 12:39 #23
Hey.
har kigget på filen... har du også ?
move_uploaded_file() er igen måden det bliver gjort på... Duer ikke...
Der må da være en anden måde ?
Avatar billede sukos Juniormester
19. november 2003 - 12:56 #24
Har du prøvet den?
Og hvilken version af PHP ligger på serveren du bruger?
Avatar billede s0reje Nybegynder
19. november 2003 - 17:35 #25
Jeg har løst problemet...
Fandt en anden metode igennem copy().
Avatar billede 7th Praktikant
19. november 2003 - 18:24 #26
Vil gerne se din løsning :)
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