Avatar billede donslund Nybegynder
06. januar 2006 - 23:02 Der er 8 kommentarer og
1 løsning

Billede bliver ikke kopieret til serveren

Jeg bruger dette script:

<?php
session_start();
include("../config.php");

mysql_query("INSERT INTO ".$picture_tbl." (filnavn) VALUES ('hep')");
$filnavn = mysql_insert_id();
// print "filnavn = ".$_GET['filnavn'];
$allowedTypes = array("image/jpeg", "image/pjpeg", "image/jpg");

$maxFileSize = 10307200;
$max_width = 2400;
$max_height = 2400;

$path = "../billeder/";

if($_FILES['img']['size']> 0){
    if (in_array($_FILES['img']['type'],$allowedTypes)){
        if ($_FILES['img']['size'] <= $maxFileSize){
            $size = getimagesize($_FILES['img']['tmp_name']);
            if($size[0] < $max_width){
                if($size[1] < $max_height){
                    $tid = $filnavn;
                    $new_w = 400;
                    $division = $size[0] / $new_w;
                    $new_h = $size[1] / $division;
                    $dst_img=ImageCreateTrueColor($new_w,$new_h);
                    $src_img=ImageCreateFromJpeg($_FILES['img']['tmp_name']);
                    ImageCopyResized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));
                    $img = $path.$img=$tid.".jpg";
                    ImageJpeg($dst_img, $img);
                }else{
                    $fejl = "Billede ikke sat ind: Filen er for høj!";
                }
            }else{
                $fejl = "Billede ikke sat ind: Filen er for bred!";
            }
        }else{
            $fejl = "Billede ikke sat ind: Filen er for stor!";
        }
    }else{
        $fejl = "Billede ikke sat ind: Forkert fil-format!";
    }
}

if(isset($fejl)){
    echo $fejl;
}else{
    $filnavn = $filnavn.".jpg";
    $hent="update ".$picture_tbl." set filnavn = '$filnavn', bil = ".$_GET['bil']." where filnavn = 'hep'";
    if(mysql_query($hent) or die(mysql_error())){
        header("location: index.php?inc=biler");
    } else {
        print "FEJL";
    }
}
?>

Men billedet bliver ikke kopieret til serveren. Hvad kan der være galt?
Avatar billede rednex Nybegynder
07. januar 2006 - 00:35 #1
Umiddelbart undrer jeg mig lidt over linien
$img = $path.$img=$tid.".jpg";

Jeg vil skyde på at den skal se sådan ud i stedet:
$img = $path. $tid . ".jpg";

Ellers er det et godt eksempel på noget lignende i user comments til File Upload i manualen - http://dk2.php.net/manual/en/features.file-upload.php
Avatar billede donslund Nybegynder
07. januar 2006 - 15:29 #2
Ja, det ser også mærkeligt ud. Men jeg synes ikke det ændrer noget at lave den om.

Hvilken linie er det der kopiere filen til serveren?
Avatar billede rednex Nybegynder
07. januar 2006 - 15:41 #3
Det er linien "ImageJpeg($dst_img, $img);" der gemmer billedet på serveren. Filnavnet er $img.

Du kan evt. prøve at udskrive indholdet af $img inden ImageJpeg() for at se om filnavn og sti ser rigtigt ud.

Hvad får du af fejlmeddelelser hvis du sætter error_reporting(E_ALL) og ini_set('display_errors', '1') i starten af scriptet?

Kunne det tænkes at scriptet ikke har skriverettigheder til det sted hvor du forsøger at gemme billedet?
Avatar billede donslund Nybegynder
07. januar 2006 - 17:09 #4
Her er hvad den skriver: (jeg har $img i starten.

img = ../billeder/14.jpg
Warning: imagejpeg(): Unable to access ../billeder/14.jpg in /var/www/bk-biler.dk/public_html/admin/picupload2.php on line 34

Warning: imagejpeg(): Invalid filename '../billeder/14.jpg' in /var/www/bk-biler.dk/public_html/admin/picupload2.php on line 34

Notice: Undefined index: bil in /var/www/bk-biler.dk/public_html/admin/picupload2.php on line 53
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where filnavn = 'hep'' at line 1
Avatar billede rednex Nybegynder
07. januar 2006 - 17:22 #5
Det ser ikke ud til at dit script har rettigheder til at skrive til mappen 'billeder' på webserveren. Du kan lige rette det med din FTP klient. Funktionen hedder gerne noget med 'file attributes', 'chmod' eller 'change mode' når du højre-klikker på mappen. Sæt rettighederne til 0777 (Read/Write/Execute for alle).
Det skulle gerne løse problemet i linie 34.

Jeg vil gætte på at fejlen i linie 53 skyldes at du ikke har angivet parameteren 'bil' (/admin/picupload2.php?bil=x).
Avatar billede donslund Nybegynder
07. januar 2006 - 17:33 #6
Fejlen i linie 56 har jeg rettet.

CHMOD for mappen billeder er 777
Avatar billede rednex Nybegynder
07. januar 2006 - 17:40 #7
OK, kører du under safe-mode på serveren?

Ifølge manualen (user comments) er der lavet en ændring fra PHP 4.4.1 som gør at du ikke kan skrive en ny fil med ImageJpeg() under safe-mode. Det skulle dog kunne løses ved at oprette filen INDEN du skriver i den med ImageJpeg().

Indsæt "touch($img);" på linien før ImageJpeg(), så *burde* det virke.
Avatar billede donslund Nybegynder
07. januar 2006 - 17:50 #8
Rednex ... Du er jo en helt.

Så bliver lørdag aften hyggelig alligevel.
Tusind tak for hjælpen.
Avatar billede rednex Nybegynder
07. januar 2006 - 17:53 #9
Helt super :o)
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