Funktion wird nicht aufgerufen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Funktion wird nicht aufgerufen

    Hallo zusammen,

    ich versuche gerade eine Bilduploadfunktion zu reparieren. Derzeit komme ich aber nicht mehr weiter.

    IST-Situation:
    Bild wird hochgeladen und in den Ordner kopiert. Die Funktion, welche prüfen soll, ob das Bild zu groß ist und es ggf. anpassen soll wird nicht aufgerufen und das Script beendet sich ohne eine Fehlermeldung

    SOLL-Situation:
    Das Bild wird hochgeladen und in einem Rutsch kopiert, ggf. verkleinert und ein Thumbnail wird erstellt und die korrekten dateinamen in eine DB eingetragen.

    Folgender Code soll das realisieren:

    1. Objekt erzeugung:
    PHP-Code:
    $bv =  new BildVerarbeitung($_FILES['datei']['tmp_name'], $_FILES['datei']['name'], 
    $filebase_guildpics$filebase_guildpics_thumbs'800'); 
    2. Die Funktion BildVerarbeitung:
    PHP-Code:
        function BildVerarbeitung($tmpName$name$gal$thumbs,$maxSize)
        {
                
    $this->pfad $gal.$name;
                
    $this->pfadthumb $thumbs.$name;
                
    move_uploaded_file($tmpName,$this->pfad);
                
    # hier bleibt das script wohl stehen, da ich keine Debug infos aus resize(...) bekomme
                
    $this->resize($this->pfad,$this->pfad$maxSize);
                
    $this->resize($this->pfad,$this->pfadthumb,150);     
        } 
    3. Kopf von resize:

    PHP-Code:
     function resize($datei,$pfad$maxGroesse
    Kann mir jemand sagen was ich falsch gemacht habe?

    Grüße
    Belenor

  • #2
    Kleines Update:

    Mittlerweile habe ich die Funktion BildVerarbeitung(...) in __construct(...) umbenannt und mit Zugriffsmodifikatoren ausgestattet.
    Desweiteren habe ich dann vom Objekt aus versucht die resize-Funktion aufzurufen, was auch ohne Fehlermeldung nicht zu funktionieren scheint.

    PHP-Code:
        public function __construct($tmpName$name$gal$thumbs,$maxSize)
        {
                
    $this->pfad $gal.$name;
                
    $this->pfadthumb $thumbs.$name;
                
    move_uploaded_file($tmpName,$this->pfad);

    Der neue Kopf von resize sieht so aus.
    PHP-Code:
        public function resize($datei,$pfad$maxGroesse
    An erster Stelle steht zu Debugging zwecken eine Echo anweisung, welche shcon nicht mehr ausgegeben wird.

    die Aufrufe sehen wie folgt aus:
    PHP-Code:
    $bv =  new BildVerarbeitung($_FILES['datei']['tmp_name'], $_FILES['datei']['name'],
     
    $filebase_guildpics$filebase_guildpics_thumbs800);
    $bv->resize($dateiname,$filebase_guildpics,800);
    $bv->resize($dateiname$filebase_guildpics_thumbs150); 
    Habe irgendwie grad nen ganzen Bretter-Wald vor dem Kopf glaube ich.

    EDIT: Was mir gerade auffällt, ist, dass ich nach dem ich die Datei kopiert habe in __construct wohl nicht in das aufrufende script zurück springe. Denn nach der Objekterstellung sollte nochmals eine Debugausgabe kommen, die nicht erscheint.
    Zuletzt geändert von Belenor; 09.05.2008, 16:25.

    Kommentar


    • #3
      Error Reporting VOLL aufgedreht? Und keine Meldungen von PHP? Und die resize-Methode aus dem Konstruktor aufzurufen geht ned?
      PHP-Code:
      ini_set('display_errors','1');
      error_reporting(E_ALL)
      public function 
      __construct($tmpName$name$gal$thumbs,$maxSize)
      {
         
      $this->pfad $gal.$name;
         
      $this->pfadthumb $thumbs.$name;
         
      move_uploaded_file($tmpName,$this->pfad);
         
      $this->resize(und deine Argumente);

      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Hmm also ich würde ja mal darauf tippen, dass move_uploaded_file einen Fehler wirft, weil der Pfad nicht korrekt angegeben ist. Aber das ist nur eine Vermutung, da kann man natürlich noch nichts sagen, schalte dreh mal das error_reporting auf, wie jahlives es ja schon gesagt hat....
        signed oder unsigned... das ist hier die Frage

        Kommentar


        • #5
          Wie in dem Thread beschrieben den man zuerst lesen soll vor dem Posten hab ich folgendes am Anfang eingefügt:
          PHP-Code:
          error_reporting(E_ALL);
              
          ini_set("display_errors"'ON'); 
          Die Funktion wollte ich ja zuerst aus dem Konstruktor raus aufrufen, was aber zum gleichen verhalten führte.
          Die Debugausgabe nach dem move_uploaded_file(...) wird noch ausgegeben.

          EDIT:
          Okay, jetzt ist die Verwirrung vollständig *grins*
          Die Fehlermeldungen nochmal aufgedreht wie hier jetzt beschrieben und in der aufrufenden Datei. Jetzt sagt er mir, dass die Funktion resize() nicht definiert wäre. (???) Aber die steht doch da direkt unter __construct() mit gleichvielen Parametern...
          Zuletzt geändert von Belenor; 09.05.2008, 17:58.

          Kommentar


          • #6
            Erstmal Danke für die Hilfestellungen.

            Hab jetzt, da mir jeglicher andere Ansatzpunkt fehlt, mal nach der Fehlermeldung gegoogled. Allerdings fand ich da hauptsächlich Standardphp-Funktionen mit dem Hinweis, dass einige Module geladen werden müßten.
            Kann das in meinem Fall auch sein?
            Denke mal eher nicht, weil dann ja innerhalb der Funktion ein Fehler auftreten würde. Kann mich eigentlich auch nicht vertippt haben, denn die Funktion hab ich mittels Codevervollständigung (verwende Eclipse mit dem PHP-Plugin) übernommen und dann die benötigten Parameter eingetragen.

            Muß ich die Funktionen in einer bestimmten Reihenfolge in der Datei angeben?
            Derzeit kommt der Konstruktor, danach die Funktion resize(), die angeblich nicht da ist, und danach noch ein paar andere...

            Kommentar


            • #7
              Nun zeige doch mal einen zusammenhängenden Ausschnitt.....
              Damit man mal sieht, welchen Bock du da schießt.
              Wir werden alle sterben

              Kommentar


              • #8
                So hier einmal der derzeit relevante Teil der Klassendefinition:
                PHP-Code:
                class BildVerarbeitung
                {
                    private 
                $pfad "";
                    private 
                $pfadthumb "";
                    
                    
                    public function 
                __construct($tmpName$name$gal$thumbs,$maxSize)
                    {
                            echo 
                "Bildverarbeitung läuft\n";
                            
                $this->pfad $gal.$name;
                            
                $this->pfadthumb $thumbs.$name;
                            echo 
                "Pfade erzeugt\n";
                            echo 
                $this->pfad."\n";
                            echo 
                $this->pfadthumb;
                            echo 
                "\n";
                            
                move_uploaded_file($tmpName,$this->pfad);
                //            echo "Datei kopiert \n";
                            //$this->resize($this->pfad,$this->pfad, $maxSize);
                            
                $this->resize($this->pfad$this->pfad,$maxSize);
                //            echo "Orignalgröße angepasst";
                            
                $this->resize($this->pfad,$this->pfadthumb,150); 
                //            echo("bilder erzeugt");
                //        
                    
                }
                    
                    public function 
                resize($datei,$pfad$maxGroesse)
                    {
                        echo
                "\n Am vergrößern\n";
                        
                $abmessungen =getimagesize($datei);
                        
                $breite $abmessungen[0];
                        
                $hoehe $abmessungen[1]; 
                        echo 
                $breite." ".$hoehe;
                        if(
                $breite $maxGroesse OR $hoehe $maxGroesse)
                        {
                            if(
                $breite >= $hoehe)
                            {
                                
                $ratio $maxGroesse $breite;
                            }
                            else
                            {
                                
                $ratio $maxGroesse $hoehe;
                            }
                            
                $breite $breite $ratio;
                            
                $hoehe $hoehe $ratio;
                            
                $bild imagecreatetruecolor($breite,$hoehe);
                            
                imageCopyResampled($bild,$datei,0,0,0,0,$breite,$hoehe$abmessungen[0], $abmessungen[1]);
                            
                imageJpeg($bild$pfad);
                        }
                        echo (
                "Bildgroesse angepasst");
                    }
                // hier kommen noch 2 methoden

                Instanziert wird das ganze über folgende Zeile, nach dem die Datei mit der Klasse mittels require in einem try-catch-block eingebunden wird.
                Der Fehler taucht wie schon gesagt, auf, sobald ich die Funktion resize in irgendeiner Form aufrufe. (sprich egal ob aus dem "Hauptscript" oder im Konstruktor)
                PHP-Code:
                $bv =  new BildVerarbeitung($_FILES['datei']['tmp_name'], $_FILES['datei']['name'], 
                $filebase_guildpics$filebase_guildpics_thumbs800); 
                Mittlerweile vermute ich aber sehr stark, dass der, für den ich das mache, irgendwas komisch installiert hat auf seinem Webserver...
                Könnte das sein?
                Wenn ja, wie kann ich rausfinden was das ist?

                Kommentar


                • #9
                  Original geschrieben von Belenor
                  So hier einmal der derzeit relevante Teil der Klassendefinition:
                  ...
                  Instanziert wird das ganze über folgende Zeile, ...
                  schön und gut - vielleicht solltest du jetzt nochmal erwähnen, welchen fehler du damit erhälst.

                  Kommentar


                  • #10
                    Mittlerweile vermute ich aber sehr stark, dass der, für den ich das mache, irgendwas komisch installiert hat auf seinem Webserver...
                    Könnte das sein?
                    Wenn ja, wie kann ich rausfinden was das ist?
                    phpinfo hilft gern

                    Kommentar


                    • #11
                      Also die Fehlermeldung (wie ich es schon weiter oben erwähnt habe ) ist FATAL ERROR: Call to undefined function resize() at ...

                      Die Frage ist, auf was muß ich bei phpinfo() achten?
                      Hab kein Plan, was man da tun muß um sowas kaputt zu machen .

                      Kommentar


                      • #12
                        Original geschrieben von Belenor
                        Also die Fehlermeldung (wie ich es schon weiter oben erwähnt habe ) ist FATAL ERROR: Call to undefined function resize() at ...
                        aber nicht bei deinem letzten code, hab's gerade ausprobiert.

                        vielleicht gibt das "at ... " mehr aufschluss?

                        Kommentar


                        • #13
                          Doch genau mit diesem Code.
                          nach dem at kommt der Pfad zum Speicherort folgender Datei:
                          "BildVerarbeitung.php on line 27"
                          Line 27 ist bei mir, inkl. dem include einer config.php zu beginn genau die Zeile in der die Funktion resize aufgerufen wird.

                          Auf was für einem System hast du denn getestet, wenn ich fragen darf?
                          Auf dem Server, an den ich gebunden bin, läuft irgend ein Suse mit PHP 5.1.2.

                          Find's schön, wenn ich Fehler finde, die nur bei mir auftreten *Grins* Macht mich zu was besonderem *lach*
                          Zuletzt geändert von Belenor; 10.05.2008, 00:00.

                          Kommentar


                          • #14
                            Original geschrieben von Belenor
                            nach dem at kommt der Pfad zum Speicherort folgender Datei:
                            "BildVerarbeitung.php on line 27"
                            Line 27 ist bei mir, inkl. dem include einer config.php zu beginn genau die Zeile in der die Funktion resize aufgerufen wird.
                            also "BildVerarbeitung.php on line 27" entspricht der zeile im konstruktor der klasse BildVerarbeitung
                            , wo die methode resize() aufgerufen wird?

                            Original geschrieben von Belenor
                            Auf was für einem System hast du denn getestet, wenn ich fragen darf?
                            Auf dem Server, an den ich gebunden bin, läuft irgend ein Suse mit PHP 5.1.2.
                            windows xp, apache 2, php 5.2.5 läuft als cgi.

                            linux ist case sensitive, wobei das bei funktionen/methoden egal sein sollte - aber vielleicht liegt da doch der fehler!?

                            Kommentar


                            • #15
                              Resize ist eine Methode und keine Funktion!
                              Von daher postest du die falsche Meldung.
                              Oder du schießt weiterhin einen Bock den du uns verheimlichst.



                              *Grins* Macht mich zu was besonderem *lach*
                              Auch wenn du es lustig findest. Es hat nichts mit der PHP Version oder dem Server zu tun..
                              Du baust einfach nur Mist
                              Wir werden alle sterben

                              Kommentar

                              Lädt...
                              X