08. februar 2011 - 09:53Der er
21 kommentarer og 1 løsning
PHP upload virker ikke hos alle
Jeg har et sært problem med noget php upload. Jeg har lavet en funktion der uploader filer, fx pdf eller billeder. Problemet er at det virker nogen steder men ikke andre. På de maskiner jeg selv har testet virker det fint så linket til fx pdf'en vil vise den rigtige fil, på andre maskiner bliver filen ikke uploaded så et forsøg på at hente filen resulterer i en fejlmeddelelse ala "Siden blev ikke fundet".
Her under er de to funktioner jeg mener kan have indflydelse på problemet.
//fremstil nyt billede med fast bredde eller højde $source = imagecreatefromjpeg($fullpath); $destination = imagecreatetruecolor($width_new, $height_new);
- Er der tilstrækkelige rettigheder på $folder? -- Der er i hvert fald tilstrækkelige rettigheder til at jeg selv kan. - Hvad med størrelsen af POST data - er der kontrol på det - - Ja, der er kontrol på. Men igen: Hvis kontrollen virker hos mig burde den vel virke på alle?
#4 Det er nu ikke fordi din funktion praler af kontrol af noget - men det må jo så gøre sig gældende andre steder?
Det er ligemeget at det virker hos dig, hvis ikke at der er de korrekte rettigheder hos en anden - du kontrollerer ikke at mappen du vil uploade til er skrivbar; det ville være en god start i din debugging.
Hvad betyder det at du har 'kontrol på'? Kontrollerer du filstørrelsen? Og er du sikker på at den ønskede filstørrelse også er tilladt i POST?
Jeg forstår ikke hvorfor du bruger basename() på $_FILES[$file]["name"]?
Din indkapsling i din if-sætning er tom - hvorfor returnerer du ikke noget du kan debugge på? Som det er nu, er din if-sætning overflødig.
Der er kontrol andre steder på hvor stor den fil der bliver er uploaded er. Tænkte det var ok sådan. Men jeg forstår ikke hvordan det kan være ok fra min computer og ikke fra en andens. Rettighederne ligger vel på serveren og det er vel ens for alle eller er der noget jeg helt har misforstået?
#8 Nej, man har typisk ikke rettighed til at skrive til en tilfældig mappe. Der skal de rette rettigheder til, for at det kan lade sig give sig.
Dette ville være en typisk fejl for 'udviklere' som laver deres forarbejde på en Windows maskine - der er der som regel ikke problemer med at skrive og læse til mapper og filer efter eget valg.
Hvordan det fungerer på en Mac ved jeg heldigvis intet om.
Men når du lægger den op på en Linux server, vil det kræve at rettigheder til de pågældende filer eller eller mapper er korrekt sat, for ellers kan du ikke skrive til dem.
Her er koden til upload-formen. Der er ikke noget javascript der validerer koden. Det er kun ganske få personer der bruger systemet så det er droppet indtil videre. Hvad kunne give problemer? Jeg skal måske lige nævne at pdfnavnet i samme hug bliver sat ind i en database og det virker fint fra alles maskiner.
Den kommer her. Jeg har kun vedhæftet den del der tager sig af pdf uploads. Der er en del php prints da jeg er igang med at finde problemet. Scriptet tester om der findes en i databasen med det navn og hvis ikke skal der testes for størrelse og filtype. if($pdf != "") {
if(mysql_num_rows($sqlFindPdfNames) == 0) { if((basename($_FILES['pdf']['type']) == "pdf") && (basename($_FILES['pdf']['size']) < 2000000)) { uploadFile("pdf","pdf"); $sqlInsertPdf = mysql_query("insert into pdfFiles (paragraphId, description, fileName) values($paragraphId,'$description', '$pdfPath')"); } else { print "<script>"; print "alert('Du kan kun lægge filer op i pfd format og højst 2 megabyte');"; print "</script>"; } } else { print "<script>"; print "alert('Der findes allerede en PDF med det navn...')"; print "</script>"; } }
Når systemet fejler, hvilket jo ikke sker når jeg selv bruger det, printes kun den øverste linje, altså filens størrelse. Men så er variablen da forstået, ikke?
Jeg har prøvet med chmod($filnavnet, 0777) for at give fulde rettigheder og kan se i min ftp-klient at alle pdf'er har læserettigheder. Så er det vel ikke et rettighedsspørgsmål, eller hvad?
Jeg har ikke glemt tråden, er bare optaget af andre ting. Kígger på scriptet og vender tilbage med spørgsmål hvis der er problemer eller med points hvis det virker!
Jeg er lige kommet i tvivl om hvad det er for upload. Er det "Upload billede og gem samtidig et thumb"? Du siger det skal rettes til så det passer med mySQL men jeg kan bare ikke lige finde noget kode der skulle have noget med mySQL eller andre databaser at gøre.
Nogen der ved om jeg kan slette de points jeg er blevet tildelt?
Synes godt om
Ny brugerNybegynder
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.