indahla Skrevet 14. april 2004 Del Skrevet 14. april 2004 Jeg driver å leker litt med upload i PHP, men har litt problemer med min webhotell-leverandør... Hvor bestemmes det hvor filer som lastes opp vha PHP lagres? Er dette i php.ini eller kan jeg sette dette i php-skriptet? Lenke til kommentar
Gilbert Skrevet 14. april 2004 Del Skrevet 14. april 2004 det kan du bestemme i php-scriptet: <?php copy($HTTP_POST_FILES['file']['tmp_name'],nyttfilnavnogpath); ?> Lenke til kommentar
indahla Skrevet 14. april 2004 Forfatter Del Skrevet 14. april 2004 det kan du bestemme i php-scriptet: <?php copy($HTTP_POST_FILES['file']['tmp_name'],nyttfilnavnogpath); ?> og path her kan være relativ til der php-skriptet kjøres fra? f.eks: <?php copy($HTTP_POST_FILES['file']['bilde.gif'],phpuploaddir/temp/); ?> Har du resten av php-skriptet jeg må bruke, eller er det bare å lage et form som sender filen til dette php-skriptet? Lenke til kommentar
Gilbert Skrevet 14. april 2004 Del Skrevet 14. april 2004 relativ path ja. i prinsippet er copy() alt du trenger for å laste opp filer. MEN du bør forsikre deg mot at man f.eks. laster opp to filer med samme navn, at man ikke laster opp filer som kan skade hjemmesiden din (viktig å sjekke filtype) osv. Lenke til kommentar
jrz Skrevet 14. april 2004 Del Skrevet 14. april 2004 www.php.net/upload har mye om saken.. det anbefales å ta en titt.. Lenke til kommentar
???????? Skrevet 14. april 2004 Del Skrevet 14. april 2004 www.php.net/upload har mye om saken.. det anbefales å ta en titt.. Gjør som zyrtech_ sier, ta en kikk i manualen. http://no.php.net/manual/en/features.file-upload.php Ikke bruk $HTTP_POST_FILES da det er mulighet for at den kan bli skrudd av i nyere versjoner av PHP. Bruk $_FILES. Lenke til kommentar
indahla Skrevet 14. april 2004 Forfatter Del Skrevet 14. april 2004 Jeg bruker følgende script: <?php // In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead // of $_FILES. $uploaddir = 'temp/'; $uploadfile = $uploaddir . $_FILES['userfile']['name']; print "<pre>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print_r($_FILES); } print "</pre>"; ?> <form enctype="multipart/form-data" action="<?php echo $php_self; ?>" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="300000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> og får følgende feilmelding: Warning: move_uploaded_file(temp/eternal_life.jpg): failed to open stream: Ikke tilgang in /home/httpd/vhosts/gamlevenner.com/httpdocs/test/upload.php on line 17 Warning: move_uploaded_file(): Unable to move '/tmp/php0YtrDZ' to 'temp/eternal_life.jpg' in /home/httpd/vhosts/gamlevenner.com/httpdocs/test/upload.php on line 17 Possible file upload attack! Here's some debugging info: Array ( [userfile] => Array ( [name] => eternal_life.jpg [type] => image/pjpeg [tmp_name] => /tmp/php0YtrDZ [error] => 0 => 4479 ) ) Hva er det jeg mangler tilgang til? Eller er det noe feil med scriptet mitt...? Lenke til kommentar
Neo Skrevet 15. april 2004 Del Skrevet 15. april 2004 Sitat fra php.ini fila: ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). upload_tmp_dir = C:\PHP\uploadtemp ; temporary directory for HTTP uploaded files (will use system default if not specified) ; Maximum allowed size for uploaded files. upload_max_filesize = 2M Siden du ikke har tilgang til denne fila dersom du bruker et webhotel ville jeg tatt kontakt med admin på hotelet og spurt han hvor filene havner. Virker ikke som om du har rettigheter til denne upload_tmp_dir. (Gjorde dette for ca 1 år siden, men husker ikke helt hvordan, mulig jeg tar litt feil her) Lenke til kommentar
indahla Skrevet 15. april 2004 Forfatter Del Skrevet 15. april 2004 Sitat fra php.ini fila: ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). upload_tmp_dir = C:\PHP\uploadtemp ; temporary directory for HTTP uploaded files (will use system default if not specified) ; Maximum allowed size for uploaded files. upload_max_filesize = 2M Siden du ikke har tilgang til denne fila dersom du bruker et webhotel ville jeg tatt kontakt med admin på hotelet og spurt han hvor filene havner. Virker ikke som om du har rettigheter til denne upload_tmp_dir. (Gjorde dette for ca 1 år siden, men husker ikke helt hvordan, mulig jeg tar litt feil her) Her er et utdrag fra phpinfo(): file_uploads On On upload_max_filesize 2M 2M upload_tmp_dir no value no value user_dir no value no value Min leverandør av webhotell er også av den litt "uhjelpsomme" typen, så det er ikke veldig lett å be om hjelp til noe her... Anything else I can do? Lenke til kommentar
???????? Skrevet 15. april 2004 Del Skrevet 15. april 2004 Sjekk om filen er der, echo $_FILES['userfile']['name']."<br>\n"; echo $_FILES['userfile']['type']."<br>\n"; echo $_FILES['userfile']['size']."<br>\n"; echo $_FILES['userfile']['tmp_name']."<br>\n"; Lenke til kommentar
indahla Skrevet 16. april 2004 Forfatter Del Skrevet 16. april 2004 Sjekk om filen er der,echo $_FILES['userfile']['name']."<br>\n"; echo $_FILES['userfile']['type']."<br>\n"; echo $_FILES['userfile']['size']."<br>\n"; echo $_FILES['userfile']['tmp_name']."<br>\n"; Koden min er som følger: <?php // In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead // of $_FILES. $uploaddir = 'temp/'; $uploadfile = $uploaddir . $_FILES['userfile']['name']; print "<pre>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print_r($_FILES); } print "</pre>"; echo $_FILES['userfile']['name']."<br>\n"; echo $_FILES['userfile']['type']."<br>\n"; echo $_FILES['userfile']['size']."<br>\n"; echo $_FILES['userfile']['tmp_name']."<br>\n"; ?> <form enctype="multipart/form-data" action="<?php echo $php_self; ?>" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="300000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> Og feilmeldingen er som følger: Warning: move_uploaded_file(temp/front.jpg): failed to open stream: Ikke tilgang in /home/httpd/vhosts/gamlevenner.com/httpdocs/test/upload.php on line 17 Warning: move_uploaded_file(): Unable to move '/tmp/php2qzwMK' to 'temp/front.jpg' in /home/httpd/vhosts/gamlevenner.com/httpdocs/test/upload.php on line 17 Possible file upload attack! Here's some debugging info: Array ( [userfile] => Array ( [name] => front.jpg [type] => image/pjpeg [tmp_name] => /tmp/php2qzwMK [error] => 0 => 37288 ) ) front.jpg image/pjpeg 37288 /tmp/php2qzwMK Og her er svaret mitt fra webhotell-leverandøren: Hei Du får sjekke ut dette på forum ute på nettet. Så kan jeg hjelpe deg når du får svar på hva dette er. Mvh Frank Bårli -----Opprinnelig melding----- Fra: Andreas Indahl [mailto:[email protected]] Sendt: 15. april 2004 21:58 Til: [email protected] Emne: SV: upload med php Filene skal jeg legge i httpdocs ja, men når de lastes opp vha PHP så legges de først i en temperær mappe (som spesifisers i php.ini). I php-filen som form'en går til skal jeg bruke copy() eller move_uploaded_file() for å flytte filen fra denne temperære mappen til httpdocs. Men, jeg har ikke tilgang til å flytte filer fra denne temerære mappen. Jeg må med andre ord ha rettighet til dette. Se her: "Warning: move_uploaded_file(temp/eternal_life.jpg): failed to open stream: Ikke tilgang in /home/httpd/vhosts/gamlevenner.com/httpdocs/test/upload.php on line 17" Dette viser at jeg ikke har tillatelse til å flytte filen fra den temperære mappen. Kan du fikse dette? Mvh Andreas Kan noen si meg med sikkerhet at jeg ikke har tilgang til upload_tmp_dir som er spesifisert i php.ini? Takk for all hjelp! Andreas Lenke til kommentar
???????? Skrevet 18. april 2004 Del Skrevet 18. april 2004 Høres ut som du er på en *nix server, da må du gi mappen skriverettigheter. Lenke til kommentar
indahla Skrevet 18. april 2004 Forfatter Del Skrevet 18. april 2004 Høres ut som du er på en *nix server, da må du gi mappen skriverettigheter. Jeg kan ikke gi rettigheter da jeg leier plassen på et webhotell. Så dette er event. noe min leverandør må gjøre. Men det er det som er feil, ikke sant? Det virker nemlig ikke som min leverandør vet hva som er feil, og lurte på om jeg kunne sjekke på et forum på internett om det var tilfellet... Så for å oppsummere: jeg trenger bare å vite om det er rettigheter til upload_tmp_dir jeg trenger får å få det til å fungere... Takk for alle svar! //A Lenke til kommentar
???????? Skrevet 18. april 2004 Del Skrevet 18. april 2004 Det er rettighetene til mappen du forsøker å flytte filen til som er problemet, virker det som. Og den kan du sikkert endre CHMOD på hvis du har ftp tilgang. Det finnes også en php funksjon for det. Lenke til kommentar
Neo Skrevet 19. april 2004 Del Skrevet 19. april 2004 Det er rettighetene til mappen du forsøker å flytte filen til som er problemet, virker det som. Og den kan du sikkert endre CHMOD på hvis du har ftp tilgang. Det finnes også en php funksjon for det. Men jeg tror det er slik at han ikke har rett til å "gå oppover" i mappestrukturen til /tmp som ligger på rota? Dette er ihvertfall ikke vanlig på webhotel. Lenke til kommentar
eXZire Skrevet 19. april 2004 Del Skrevet 19. april 2004 Er vanlig at du ikke kan gå til denne tmp mappen, det som IKKE er vanlig er at du ikke har uploadingsrettigheter til denne mappen.. Så du får nok be hosten din gjøre noe med rettighetene til den mappen ja... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå