18. november 2003 - 18:42Der er
31 kommentarer og 2 løsninger
Fejl efter opdatering til PHP 4.3.4
Hej.
Jeg har lige fået opdateret min php til 4.3.4. Men nu virker getimagesize() ikke mere. Jeg bruger getimagesize til at finde ud af om et uploadet billede er af formatet JPG.
Sådn ser min kode stump ud
$pictest = getimagesize($upfile);
if($pictest[2]!=2) { echo "Fejl! Billedet skal være af formatet JPG/JPEG<br><br> <b>Løsning:</b><br><br>
1. Konverter billedet.<BR> 2. Vælg et andet billed.<BR></font>"; } else {
blah blah
}
Nogen gange skriver denne fejl ud: Warning: getimagesize(): Read error! in andre gange hopper den bare ind i min if sætning..
Nogen der har oplevet noget lignende med den nye php?
Jeg har kigger php change loggen igennem, og læst at getimagesize() er ændret på nogle punkter. Men det tyder ikke på at det har noget med dette at gøre..
Jeg bruger getimagesize() et andet sted på mit site også, hvor fil argumentet peger direkte ned på en lokation på serveren -og der virker det fint. Hvorimod i det andet tilfælde, er det en fil som bliver uploadet via en HTTP form, og bliver først skrevet skrevet på serveren senere i mit script.
Beskriv den fejl, du får, og prøv eventuelt følgende som test: $image = "filename.jpg"; $test = getimagesize($image); foreach ($test as $key=> $value){ echo $key.":".$value."<br>"; }
Det kan eventuelt være, at du bruger den forkerte del.. Hvis det er et upload, smides filen således: $_FILES['feltnavn']['tmp_name'];
Den ligger i et temp-dir indtil du har flyttet den med move_uploaded_files();
jeg kender ikke nok til din situation til at turde kalde dette for et svar.. Men giv mig lidt mere - så kan det være at jeg lige kan rulle en løsning ud ;-) Hvis, som du siger, det virker andetsteds, så er problemet nok ikke, at getimagesize() ikke virker..
Jeg prøvede at smide den her ind som jeg fandt på php.net : if (is_uploaded_file($HTTP_POST_FILES['upfile']) { echo "den virker" ; } else { echo "den virker ikke" ; }
Du skriver at dit seneste eksempel ikke virker... Det gør det heller ikke. Når en bruger poster en fil lægges den først i et temp-dir, som kan accesses gennem $_FILES['feltnavn']['tmp_name'] $_FILES er et 2-dimensionelt array, og derfor virker $_FILES['upfile'] ikke... Hvad indeholder din upfile? Prøv at lave en echo og smid svaret her..
Ja men når register_global er sat til on, burde det ikke være nødvendigt at bruge diverse $_FILES[] og $HTTP_POST_FILES, og det gør jeg heller ikke. Jeg bruger blot variablen $upfile, som stammer fra min HTML FORM med input tagget -> <INPUT NAME=\"upfile\" TYPE=\"file\" size=30>
Og denne $upfile variabel er sat, og når jeg smider den i en echo"$upfile" ; skriver den ikke noget ud, men hvis jeg skriver echo "$upfile_name" ; skriver den navnet på filen ud.
$pictest = getimagesize($upfile_tmp_name) -> virker heller, men den skriver heller ingen fejl. Den køre blot ned i min if sætning: if($pictest[2]!=2) { echo "Fejl! Billedet skal være af formatet JPG/JPEG<br><br> <b>Løsning:</b><br><br>
1. Konverter billedet.<BR> 2. Vælg et andet billed.<BR></font>"; }
Prøv en gang at bruge echo $_FILES['upfile']['tmp_name']; (naturligvis efter at du har postet siden med filen...) Hvis det virker, så er det i hvert fald ikke din post eller getimagesize, den er gal med...
ja enctype har jeg med.. Ved at smide en phpinfo() ind i mellem fandt jeg følgende: _FILES["upfile"] Array ( [name] => lp.jpg [type] => [tmp_name] => [error] => 3 [size] => 0 )Og ja der kan man se at den ikke finder nogen type, som er den jeg vil ha fat i ex. 2 = jpg/jpeg
Og jeg har prøvet med en del forskellige billede uden noget held.
Der er godt nok ikke noget om str. men det kan jo laves. Derimod tjekkes der netop hvilken filtype det er.
Men hvorvidt getimagesize virker, kan du jo teste med:
<?php $str = getimagesize($_SERVER["DOCUMENT_ROOT"] ."/billede.jpg"); echo $str[2]; ?> hvor billede.jpg selvf. ligger i roden af dit site, altså domain.dk/billede.jpg
hmm.. Nå.. Så fik du da løst dit problem ;-) Til lykke!
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.