• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Skript funktioniert nur wenn es extern aufgerufen wird! warum?

htmlphp

Mitglied
Hallo Leute,
ich habe mir ein Skript zum Bilderupload geschrieben.
Das funktioniert auch.

Direkt danach wird
PHP:
//Hier das Upload-Skript

include_once("thumbnail.php");
$thumbnail = new thumbnail();
$thumbnail->create("../images/image.jpg");
$thumbnail->setQuality(90);
$thumbnail->minsize(100);
$thumbnail->maxsize(200);
$thumbnail->save("../images/image_thumb.jpg");
echo("durch");
ausgeführt.

"durch" wird ausgegeben, allerdings wurde das Thumbnail nicht erstellt.
Wenn ich o.g. Teil in ein eigenes Skript packe und dieses aufrufe, dann wird das Thumbnail erstellt.
Warum ist das so?
Wie kann ich hinbekommen, dass es direkt nach dem Bildupload erstellt wird?

VIELEN DANK!
 
habe das skript von HIER
spielt aber keine Rolle.

Wenn ich es extra ausführe klappt es.
Nur wenn ich in einer php-Datei erst das Bild hochlade und dann auch direkt das Thumbnail erstellt werden soll, wird kein Thumbnail erstellt.
Es werden keine Fehler etc. ausgegeben.
Das Skript läuft aber komplett durch, da das echo ausgegeben wird.
 
das speichern das uploads klappt ohne probleme.

der upload wird in /images gespeichert.
das skript liegt in /skripte

aber das dürfte doch keine rolle spielen, oder?
wenn ich das tumbnail-skript in einer extra .php speicher und über den browser manuell aufrufe klappt es ja.
 
Wenn es nur funktioniert wenn du es direkt aufrufst, würde ich ein simples Problem mit den Pfaden vermuten.

Hast du schon sowas versucht:

PHP:
//Hier das Upload-Skript

include_once("thumbnail.php");
$thumbnail = new thumbnail();
if(is_file("../images/image.jpg")) echo 'Pfad stimmt.';
$thumbnail->create("../images/image.jpg");
$thumbnail->setQuality(90);
$thumbnail->minsize(100);
$thumbnail->maxsize(200);
$thumbnail->save("../images/image_thumb.jpg");
echo("durch");

Alternativ könntest du auch mal versuchen, absolute Pfade (nur zum Testen) zu verwenden.

Nur weil 'durch' ausgegeben wurde, bedeutet es noch nicht dass kein Fehler bis dahin passiert ist.
 
aber das dürfte doch keine rolle spielen, oder?

Doch, der Quellcode spielt natürlich eine Rolle da wir ja sehen müssten wie das Originalbild gespeichert wird. In deinem Thumbail-Code wird ja immer nur die selbe Datei unter dem selben Dateinamen gespeichert - das muss doch anhand der Speicherung angepasst werden.
 
also gut, hier mal alles
(hier wird das bild erfolgreich hochgeladen, aber kein thumbnail erstellt)
PHP:
<?php

    echo $_SESSION['user_id'];
    
    /*
    * Definitionen für die Datenbankverbindung
    */
    $dbname="asdf";
    $dbhost="asdf";
    $dbuser="asdf";
    $dbpass="asdf";
    
    /*
    * Datenbankverbindung herstellen
    */
    $dbconnection = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
    mysql_select_db($dbname, $dbconnection) or die(mysql_error());
    
    $name = $_POST['name'];
    $alter = $_POST['alter'];
    $ort = $_POST['ort'];
    $bild = " ";
    $qualifikation = $_POST['qualifikationen'];
    $beschreibung = $_POST['kurzbeschreibung'];
    $owner = $_SESSION['user_id'];
    
    mysql_query("INSERT INTO schauspieler (`name`, `alter`, `ort`, `bild`, `qualifikationen/ausbildung`, `beschreibung`, `owner`)
                VALUES ('$name', '$alter', '$ort', '$bild', '$qualifikation', '$beschreibung', '$owner')", $dbconnection) or die(mysql_error());
                
    $result = mysql_query('SELECT id FROM schauspieler WHERE owner = "'.$owner.'" ORDER BY id DESC LIMIT 1', $dbconnection)  or die ('Ung&uuml;ltige Abfrage: ' . mysql_error());
    $row = mysql_fetch_array($result, MYSQL_BOTH);
    $id = $row[0];     
    
    $dateityp = GetImageSize($_FILES['datei']['tmp_name']);
    if($dateityp[2] != 0)
   {

   if($_FILES['datei']['size'] <  20480000)
   {
      $f_name = 'schauspieler_'.$id;
      echo $f_name;
      move_uploaded_file($_FILES['datei']['tmp_name'], "images/".$f_name.".jpg");
      mysql_query('UPDATE schauspieler SET `bild` = "'.$f_name.'" WHERE `id` = "'.$id.'"', $dbconnection) or die(mysql_error());
      }

   else
      {
         echo "Das Bild darf nicht größer als 2MB sein ";
      }

    }

else
    {
    echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }
    
    echo "done";
    
    include_once("thumbnail.php");
    $thumbnail = new thumbnail();
    $thumbnail->create("../images/".$f_name.".jpg");
    $thumbnail->setQuality(90);
    $thumbnail->minsize(100);
    $thumbnail->maxsize(200);
    $thumbnail->save("../images/".$f_name."_thumb.jpg");
    echo("durch");
    
?>

wenn ich dann aber (z.b. in einem neuen tab) folgendes skript (welches im selben ordner wie das o.g. skript liegt aufrufe wird das thumbnail erstellt
PHP:
<?php
    include_once("thumbnail.php");
    $thumbnail = new thumbnail();
    $thumbnail->create("../images/schauspieler_28.jpg");
    $thumbnail->setQuality(90);
    $thumbnail->minsize(100);
    $thumbnail->maxsize(200);
    $thumbnail->save("../images/schauspieler_28_thumb.jpg");
    echo("durch");
?>
 
und hier die tumbnail.php (1/2)
PHP:
<?php
class thumbnail
{
 
        var $img;
        var $fileInfo;
        var $fullName;
        var $newX;
        var $newY;
        var $quality;
        var $orgX;
        var $orgY;
 
        // $data - (voller) Dateiname oder String (z.B. aus Datenbank)
        function create($data)
        {
 
                $this->destroy();
 
                if (file_exists($data)) {
                        $this->img = @ImageCreateFromJpeg($data);
                        $this->fileInfo = basename($data);
                        $this->fullName = $data;
                } else {
                        $this->img = @ImageCreateFromString($data);
                }
 
                if (!$this->img) {
                        $this->destroy();
                        return false;
                } else {
                        $this->orgX = ImageSX($this->img);
                        $this->orgY = ImageSY($this->img);
                        return true;
                }
        }
 
        // Höhe des aktuellen Bildes im Container zurückgeben, false bei Fehler
        function height()
        {
                if ($this->img) {
                        return ImageSY($this->img);
                } else {
                        return false;
                }
        }
 
        // Breite des aktuellen Bildes im Container zurückgeben, false bei Fehler
        function width()
        {
                if ($this->img) {
                        return ImageSX($this->img);
                } else {
                        return false;
                }
        }
 
        // Qualität für Ausgabe setzen
        function setQuality($quality = false)
        {
                if ($this->img && $quality) {
                        $this->quality = $quality;
                } else {
                        return false;
                }
        }
 
        // Thumbnail erzeugen
        function resize($newX = false,$newY = false)
        {
                if ($this->img) {
 
                        $X = ImageSX($this->img);
                        $Y = ImageSY($this->img);
 
                        $newX = $this->_convert($newX,$X);
                        $newY = $this->_convert($newY,$Y);
 
                        if (!$newX && !$newY) {
                                $newX = $X;
                                $newY = $Y;
                        }
 
                        if (!$newX) {
                                $newX = round($X / ($Y / $newY));
                        }
 
                        if (!$newY) {
                                $newY = round($Y / ( $X / $newX));
                        }
 
                        if ( ! $newimg = ImageCreateTruecolor($newX,$newY)) {
                                $newimg = ImageCreate($newX,$newY);
                        }
 
                        if ( ! ImageCopyResampled ($newimg, $this->img, 0, 0, 0, 0, $newX, $newY,$X,$Y)) {
                                ImageCopyResized ($newimg, $this->img, 0, 0, 0, 0, $newX, $newY,$X,$Y);
                        }
 
                        $this->img = $newimg;
 
                        return true;
                } else {
                        return false;
                }
        }
 
        // Schneidet ein Bild neu zu
        /* Werte für cut (X stellt das Ergebnis dar)
 
              $srcX
              +---+--------------+
        $srcY |   |              |
              +---+---+          |
              |   | X | $newY    | Ursprungsbild
              |   +---+          |
              |    $newX         |
              |                  |
              +------------------+
        */
        function cut($newX,$newY,$srcX = 0,$srcY = 0)
        {
 
                if ($this->img) {
 
                        $X = ImageSX($this->img);
                        $Y = ImageSY($this->img);
 
                        $newX = $this->_convert($newX,$X);
                        $newY = $this->_convert($newY,$Y);
 
                        if (!$newX) {
                                $newX = $X;
                        }
 
                        if (!$newY) {
                                $newY = $Y;
                        }
 
                        if ( ! $newimg = ImageCreateTruecolor($X,$Y)) {
                                $newimg = ImageCreate($X,$Y);
                        }
                        ImageCopy ($newimg,$this->img,0, 0, 0, 0,$X,$Y);
                        ImageDestroy($this->img);
                        if ( ! $this->img = ImageCreateTruecolor($newX, $newY)) {
                                $this->img = ImageCreate($newX, $newY);
                        }
                        imagecopy ($this->img,$newimg, 0, 0,$srcX, $srcY, $newX, $newY);
                        ImageDestroy($newimg);
 
                        return true;
 
                } else {
                        return false;
                }
        }
 
        /* schneidet ein Teil mit Größe newX und newY an festgelegten Stellen des Bildes zu
        $pos = Position welches Teil verwendet werden soll
        +---+---+---+
        | 1 | 2 | 3 |
        +---+---+---+
        | 4 | 5 | 6 |
        +---+---+---+
        | 7 | 8 | 9 |
        +---+---+---+
        */
        function autocut($newX,$newY,$pos = 5)
        {
                if ($this->img) {
 
                        $X = ImageSX($this->img);
                        $Y = ImageSY($this->img);
 
                        $newX = $this->_convert($newX,$X);
                        $newY = $this->_convert($newY,$Y);
 
                        if (!$newX) {
                                $newX = $X;
                        }
 
                        if (!$newY) {
                                $newY = $Y;
                        }
 
                        switch ($pos) {
                            case 1:
 
Was auffällt:
PHP:
move_uploaded_file($_FILES['datei']['tmp_name'], "images/".$f_name.".jpg");
hier wird das Bild nach images verschoben und hier
PHP:
$thumbnail->create("../images/".$f_name.".jpg");
soll es von ../images genommen werden.
 
Zurück
Oben