heinzi: datei-Upload fehlermeldung

Hi zusammen,

habe nochmal eine Frage zum dateiupload.
Ich will die Überschreitung der dateigrösse der php.ini abfangen.
das mache ich so:

/* Sende eMail und gebe Fehler bzw. Bestaetigung aus */
if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {
          echo "Deine Nachricht wurde  gesendet.";
  }
  elseif ($fileErr == UPLOAD_ERR_INI_SIZE)
  {
  echo "Die Dateigr&ouml;sse &uuml;berschreitet die zul&auml;ssige Maximalgr&ouml;sse von 8 MB.<br />&Uuml;bertragung abgebrochen";
  }
        else {
          echo "Es ist ein Fehler beim Senden der eMail aufgetreten.";
        }

php.ini ist auf 8 MB eingestellt.

Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
das ist aber nicht der Fall..

warum?

  1. echo $begrüßung;

    Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
    if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {

    Zuerst wird der erste Teil des Ausdrucks ausgewertet. Das heißt, die Funktion mail() wird aufgerufen und gibt true zurück, wenn der Versand geklappt hat. Dann wird versucht den zweiten Teil auszuwerten, was ein bei Ungleichheit ein false ergibt. true && false ergibt false. Die Bedingung des if ist nicht erfüllt.

    Wenn du die Reihenfolge der Ausdrücke umdrehst, kann ein Schuh draus werden, denn dann ergibt der Vergleichsausdruck ein false, die Bedingung kann nun nicht mehr erfüllt werden, weswegen der zweite Operand nicht mehr bearbeitet wird. Übersichtlicher ist es aber, das Mail-Senden im Anweisungskörper zu notieren. Als eine Bedingung notiert wird auch dann der gesamte Ausdruck unwahr, wenn das Abliefern der Mail fehlgeschlagen ist. Der Upload an sich hat dann zwar funktioniert, der Anwender bekommt jedoch trotzdem eine Nicht-erfolgreich-Meldung.

    echo "$verabschiedung $name";

    1. Hallo,

      Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
      if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {

      Zuerst wird der erste Teil des Ausdrucks ausgewertet. Das heißt, die Funktion mail() wird aufgerufen und gibt true zurück, wenn der Versand geklappt hat. Dann wird versucht den zweiten Teil auszuwerten, was ein bei Ungleichheit ein false ergibt. true && false ergibt false. Die Bedingung des if ist nicht erfüllt.

      if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {
                echo "Deine Nachricht wurde  gesendet.";
        }
        elseif ($fileErr == UPLOAD_ERR_INI_SIZE)
        {
        echo "Die Dateigr&ouml;sse &uuml;berschreitet die zul&auml;ssige Maximalgr&ouml;sse von 8 MB.<br />&Uuml;bertragung abgebrochen";
        }
              else {
                echo "Es ist ein Fehler beim Senden der eMail aufgetreten.";
              }

      demnach sollte aber in jedem Fall "Es ist ein Fehler beim Senden der eMail aufgetreten." ausgegeben werden.
      Daher meine Annahme, dass das Problem durch post_max_size verursacht wird, $_FILES['datei']['error'] den Wert "" [NÜSCHT™] und UPLOAD_ERR_OK den Wert 0 hat, ("" == 0) === true

      Für Heinzi zum nachlesen, was ganz genau hier passiert: Vergleichs-Operatoren

      $a ==$b (gleich)
       $a===$b (identisch)

      Gruß aus Berlin!
      eddi

      1. echo $begrüßung;

        Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
        if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {

        Zuerst wird der erste Teil des Ausdrucks ausgewertet. Das heißt, die Funktion mail() wird aufgerufen und gibt true zurück, wenn der Versand geklappt hat. Dann wird versucht den zweiten Teil auszuwerten, was ein bei Ungleichheit ein false ergibt. true && false ergibt false. Die Bedingung des if ist nicht erfüllt.

        if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {
                  echo "Deine Nachricht wurde  gesendet.";
          }
          elseif ($fileErr == UPLOAD_ERR_INI_SIZE)
          {
          echo "Die Dateigr&ouml;sse &uuml;berschreitet die zul&auml;ssige Maximalgr&ouml;sse von 8 MB.<br />&Uuml;bertragung abgebrochen";
          }
                else {
                  echo "Es ist ein Fehler beim Senden der eMail aufgetreten.";
                }

        demnach sollte aber in jedem Fall "Es ist ein Fehler beim Senden der eMail aufgetreten." ausgegeben werden.

        Die Mail wird immer versendet, egal was sonst noch so passiert. Was die Auswertung der restlichen Bedingungen ergibt und was daraufhin am Bildschirm angezeigt wird, weiß ich nicht, da mir die Inhalte der beteiligten Variablen unbekannt ist. Ich weiß auch nicht, wie der Mailtext aussieht. Die Beschreibung "eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde" passte auch nicht vollständig auf einen der Texte im Quelltext. Deswegen nehme ich an, dass damit der Mailtext gemeint ist.

        echo "$verabschiedung $name";

    2. Hi nochmal,
      ich habe jetzt den Schnipsel folgendermassen geändert:

      if(!empty($fileErr) && $fileErr==UPLOAD_ERR_INI_SIZE) {
                echo "Die Maximalgr&ouml;sse der Upload-Datei wurde &uuml;berschritten .<br />";
        }
      elseif (@mail($this->destinationMail,$this->subject,"",$mail_header))
        {
        echo "Die Nachricht wurde an Schulze gesendet";
        }
      else{
                echo "Es ist ein Fehler beim Senden der eMail aufgetreten.";
              }

      das hätte doch dann funktionieren müssen oder sehe ich das falsch?

      danke für die Hinweise.
      gruß heinzi...

      1. echo $begrüßung;

        ich habe jetzt den Schnipsel folgendermassen geändert:
        [...]
        das hätte doch dann funktionieren müssen oder sehe ich das falsch?

        Na sicher "funktioniert" das, irgendwie. Die Frage ist nur, ob dein Anwendungsfall damit abgedeckt ist. Prüfst du, ob dein Code das macht was du erwartest? Wenn ja, wie? Prüfst du ob deine Erwartungen mit der Realität übereinstimmen, indem du die Inhalt der beteiligten Variablen und die Ergebnisse der verwendeten Ausdrücke zur Kontrolle ausgibst?

        echo "$verabschiedung $name";

  2. Hallo,

    if(/* ... */ ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {}

    php.ini ist auf 8 MB eingestellt.
    Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
    das ist aber nicht der Fall..
    warum?

    leider kann ich Dir nur eine Möglichkeit schreiben, die dafür verantwortlich sein kann. Anders als es im Manual dargelegt ist, bestimmen nicht nur die Direktiven file_uploads, upload_tmp_dir und upload_max_filesize das Hochladen von Dateien; betrachtet man nur die Konfiguration, werden jedoch nur diese zum Bestimmen des Wertes $_FILES[$name]['error'] herangezogen.
     Die Direktive post_max_size bestimmt aber ebenso die Größenbeschränkung angelieferter Dat(ei)en. Es ist nur eben dumm, dass PHP bei einem Überschreiten der Direktive post_max_size stillschweigt; also es wird nichts, gar nichts und immer wieder nichts an Fehlermeldungen ausgegeben, noch ist der Fehler auffangbar. Als Endkonsequenz wird lediglich $_FILES nicht befüllt und $_FILES['datei']['error'] gibt bei einer Standardkonfiguration keine Notiz aus:

    Probiere also mal Dein Script mit voller ERROR-Ausgabe:
    error_reporting(E_ALL ^ E_STRICT);

    Dann sollte folgendes angezeigt werden:
    <br />
    <b>Notice</b>:  Undefined index:  datei in <b>...</b> on line <b>...</b><br />

    Sollte dem so sein, kannst Du mittels array_key_exists('datei',$_FILES) und $_SERVER['CONTENT_LENGTH'] "überprüfen", ob es zu einer Größenüberschreitung kam.

    Ohne Blatt vorm Mund: PHP war, ist und wird es auch immer bleiben - ein Haufen Frickelsoftware. ;(

    Gruß aus Berlin!
    eddi

    1. Hello,

      if(/* ... */ ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {}

      das ist nicht korrekt!

      ~~~php

      if(isset($_FILES['datei']['error']) and ($_FILES['datei']['error'] === UPLOAD_ERR_OK)))
         {
             ## es muss 'identisch 0' heißen oder eben 'identisch UPLOAD_ERR_OK'
             ## dann liegt kein Fehler vor
         }

        
      Das müsste auch gelten für ein Überschreiten von post\_max\_size.  
      Dann dürfte $\_FILES['datei']['error'] nicht existieren bzw. es dürfte keine 0 in ['error'] stehen.  
        
        
        
        
      Ein harzliches Glückauf  
        
      Tom vom Berg  
      ![](http://selfhtml.bitworks.de/Virencheck.gif)  
        
      
      -- 
      Nur selber lernen macht schlau  
      <http://bergpost.annerschbarrich.de>
      
      1. mmhhh...

        das funktioniert so aber auch nicht und das müßte ja eigentlich die Intention Deines Hinweises sein oder?

        Ich habe egal mit welcher Syntax auch immer noch keine einzige php_ini Fehlermeldung bekommen, das verwundert mich halt irgendwie...

        if(isset($_FILES['datei']['error']) and ($_FILES['datei']['error'] === UPLOAD_ERR_INI_SIZE)) {
                echo "Die Maximalgr&ouml;sse der Upload-Datei wurde &uuml;berschritten .<br />";
          }
        elseif ($_FILES['datei']['error'] === UPLOAD_ERR_OK)
          {
          @mail($this->destinationMail,$this->subject,"",$mail_header);
          echo "Die Nachricht wurde an Schulze mit Anhang gesendet";
          }
        elseif (empty($_FILES['datei']['error']))
          {
          @mail($this->destinationMail,$this->subject,"",$mail_header);
          echo "Die Nachricht wurde an Schulze gesendet";
          }
        else{
                  echo "Es ist ein Fehler beim Senden der eMail aufgetreten.";
                }

        1. Hello,

          Ich habe egal mit welcher Syntax auch immer noch keine einzige php_ini Fehlermeldung bekommen, das verwundert mich halt irgendwie...

          if(isset($_FILES['datei']['error']) and ($_FILES['datei']['error'] === UPLOAD_ERR_INI_SIZE))

          Bekommst Du denn überhaupt noch eine Response aus dem Script, wenn der Post-Request zu groß geworden ist?

          Wird das Script da nicht einfach abgebrochen?
          Kann es leider im Moment nicht selber ausprobieren.

          Ein harzliches Glückauf

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hi,
            es ist halt so, dass dateien zwischen 5 und 8 MB an anderer Stelle abgefangen werden und eine Fehlermeldung bringen:

            $errMess .= 'Upload-Datei zu groß, ca. '.(number_format($_SERVER['CONTENT_LENGTH']/1024/1024,2)).' MB!<br />Maximal 5 MB zugelassen.<br />';

            Bei "Übergrössen" (>8mb) wird immer dieser fall an der beretis ge,mailten Stelle aufgerufen:

            elseif ($_FILES['datei']['error'] == UPLOAD_ERR_OK)
              {
              @mail($this->destinationMail,$this->subject,"",$mail_header);
              echo "Die Nachricht wurde an Schulze mit Anhang gesendet";
              }

            Das Skript bricht im Endeffekt ja auch ab, ich bekomme eine leere Mail, aber der User erfährt nix davon, weil keine Unterscheidung gemacht wird ob
            UPLOAD_ERR_OK oder UPLOAD_ERR_OK

            Ich habe halt das gefühl, dass die $_FILES-Fehlermeldungen nicht funzen.

            und da war es egal ob ich ==UPLOAD_ERR_OK oder ===UPLOAD_ERR_OK geschrieben habe.

            Hast Du vielleicht noch ne idee?

            danke, gruß Heinzi

            1. Hello,

              Bei "Übergrössen" (>8mb) wird immer dieser fall an der beretis ge,mailten Stelle aufgerufen:

              elseif ($_FILES['datei']['error'] == UPLOAD_ERR_OK)

              Ist denn bei Übergrößen $_FILES überhaupt vorhanden?
              Könnte es sein, dass Du error_reporting(E_ALL) vergessen hast, zum Testen einzuschalten?

              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Zu spät;-)

                habe jetzt folgende Variante und die funzt wohl.:

                if ($_FILES['datei']['error'] == UPLOAD_ERR_NO_FILE)
                  {
                  @mail($this->destinationMail,$this->subject,"",$mail_header);
                  echo "Die Nachricht wurde an Schulze gesendet";
                  }
                  elseif($_FILES['datei']['error'] !== UPLOAD_ERR_OK) {
                        echo "Die Maximalgr&ouml;sse der Upload-Datei wurde &uuml;berschritten .<br /> Upload abgebrochen!";
                        print_r ($_FILES['datei']['error']);
                  }
                  elseif ($_FILES['datei']['error'] == UPLOAD_ERR_OK)
                  {
                  @mail($this->destinationMail,$this->subject,"",$mail_header);
                  echo "Die Nachricht wurde mit Anhang an Schulze gesendet";
                  }
                        else{

                echo "Es sind Fehler aufgetreten.";
                        }

                danke,gruß heinzi

                1. Es wäre zukünftig begrüßenswert, wenn Du auf direkt gestellte Fragen, antworten würdest.

                  Danke und Gruß aus Berlin!
                  eddi

                  --
                  Diese Nachricht ist made in Rixdorf und wurde mittels 100% recycelter Elektronen verfasst.
                  Und der Strom? Äh - kommt aus der Steckdose! :)
          2. Hallo Tom,

            Wird das Script da nicht einfach abgebrochen?

            an die Problematik kann ich mich auch noch erinnern. Damals als PHP noch "EXPERIMENTAL" in der Modul-Version des apachen 2.x war, konnte dieses Verhalten auftreten.

            Apache 2.2.8 und PHP 5.2.8 (Modul) brechen aber nicht mehr ab.

            Gruß aus Berlin!
            eddi

            --
            Diese Nachricht ist made in Rixdorf und wurde mittels 100% recycelter Elektronen verfasst.
            Und der Strom? Äh - kommt aus der Steckdose! :)
            1. Hello Eddi,

              an die Problematik kann ich mich auch noch erinnern. Damals als PHP noch "EXPERIMENTAL" in der Modul-Version des apachen 2.x war, konnte dieses Verhalten auftreten.

              Apache 2.2.8 und PHP 5.2.8 (Modul) brechen aber nicht mehr ab.

              Das hört sich gut an.
              Seit welchen Versionen ist denn dieses Verhalten (nicht abbrechen) sichergestellt?

              Ich habe ja sowieso noch das Problem mit dem Non_Blocking Mode von flock()
              Das konnte ich auf dem Debian bisher nicht beseitigen.
              Auf der Suse habe ich es noch nicht überprüft, das kommt ggf. Donnerstag an die Reihe.
              Und für den Debian muss ich dann wohl das gesamte Paket (Apache, PHP, GD, Freetype, ???) selber zusammenstellen und kompilieren, denn mit den fertigen Modulen lässt sich der Bug nicht beseitigen.

              Was muss ich denn da noch alles reinpacken, damit es vollständig ist?

              apache 2.2.8
              php 5.2.8 modul
              php cli
              ?
              ?
              ?

              Habe ich leider total vergessen, was alles dazugehört :-(

              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Re:

                Ich habe ja sowieso noch das Problem mit dem Non_Blocking Mode von flock()
                Das konnte ich auf dem Debian bisher nicht beseitigen.

                Also das mit dem flock() will mir aber auch nicht in den Schädel, warum das auf Debian nicht erwartungsgemäß arbeitet.

                Auf der Suse habe ich es noch nicht überprüft, das kommt ggf. Donnerstag an die Reihe.
                Und für den Debian muss ich dann wohl das gesamte Paket (Apache, PHP, GD, Freetype, ???) selber zusammenstellen und kompilieren, denn mit den fertigen Modulen lässt sich der Bug nicht beseitigen.

                Installation der Sourcen ist fast noch original mein damals geschriebenes. So dehe ich auch immer noch heran. Was Dir später einfällt, was Du an Erweiterungen brauchst, kannst Du dann über phpize als Modul erstellen lassen.
                 Freetype verwendest Du für die GD? Wie dekadent. Ich will von Dir gehostet werden! ;)

                (Übrigens: PCRE lässt sich nicht im Nachhinein erstellen, ist mir bereits aufgefallen!)

                Gruß aus Berlin!
                eddi

                --
                Diese Nachricht ist made in Rixdorf und wurde mittels 100% recycelter Elektronen verfasst.
                Und der Strom? Äh - kommt aus der Steckdose! :)
                1. Hello,

                  Freetype verwendest Du für die GD? Wie dekadent. Ich will von Dir gehostet werden! ;)

                  Wie meinst Du denn das jetzt? Ich habe auf dem eigenen Server nur 10GB Platz und die habe ich momentan mit dem Verfolgungswahn-Streifen "Zeitgeist" nahezu belegt.
                  Wird Zeit, dass ich den mal wieder lösche :-)
                  Dann kannst Du gerne einen Teil davon haben.

                  GD Support          enabled
                  GD Version          2.0 or higher
                  FreeType Support  enabled
                  FreeType Linkage  with freetype
                  FreeType Version  2.2.1
                  T1Lib Support          enabled
                  GIF Read Support  enabled
                  GIF Create Support  enabled
                  JPG Support          enabled
                  PNG Support          enabled
                  WBMP Support          enabled

                  Die Standard-Module von Debian haben die GD-LIB _inclusive_ Freetype-Support an Bord.
                  Wenn ich es selber baue, muss ich das mMn extra berücksichtigen. Berichtige mich bitte, wenn es nicht stimmt. Und dann soll der Selbstbau ja eigentlich auch ein Update verkraften.

                  Ich bin mir noch nicht klar darüber, ob 'einmal Selbstbau' nicht 'immer Selbstbau' bedeutet?

                  Das wäre nicht so das erwünschte Ziel. Denn es gibt immer mal wieder die Anforderung, "mal eben schnell" einen Server aufzusetzen für einen Kunden. Und da mag ich eigentlich keine Hampelei. Die Liste der installierten Module wird mit "dgkg --get-selections" dokumentiert und dann ist es gut.

                  Das funktioniert aber mWn nicht mehr, wenn ich anfange, selber darin herumzufummmeln.

                  Bevor ich irgendwelche maßgeblichen Änderungen an Kundensystemen vornehme, baue ich immer einen Clone zum Experimentieren. Das dauert i.d.R bei Debian ca. 2 Stunden, bei Suse (mit dem alten Yast) kann es schon mal 6 Stunden dauern.

                  Von den wichtigsten Kunden habe ich ihr aktuelles Systemabbild auf Wechsel-Festplatte liegen, natürlich nur mit Musterdaten, denn einige bringen es durchaus auf über 500GB Datenbestand...

                  Bisher war das immer die beste Vorgehensweise und hat mich vor weiteren Desaster bewahrt.

                  Ein harzliches Glückauf

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Re:

                    Freetype verwendest Du für die GD? Wie dekadent. Ich will von Dir gehostet werden! ;)

                    Wie meinst Du denn das jetzt?

                    Kleiner Scherz, wenn _irgendwann_ mal Ernst draus wird, dann bin ich auch nicht böse ;)

                    Ich habe auf dem eigenen Server nur 10GB Platz und die habe ich momentan mit dem Verfolgungswahn-Streifen "Zeitgeist" nahezu belegt.

                    Zeitgeist? Ich dachte, das sei von Schiller:

                    Den Zeitgeist lass getrost geschehen
                       und die Erkenntnis in Dir reifen.
                       Es ist nicht gut mit ihm zu gehen
                       nur ist es klug ihn zu begreifen.

                    Aber nachdem, was ich mir angelesen habe, passt das ebenso gut zum Thema des Films.

                    Die Standard-Module von Debian haben die GD-LIB _inclusive_ Freetype-Support an Bord.
                    Wenn ich es selber baue, muss ich das mMn extra berücksichtigen. Berichtige mich bitte, wenn es nicht stimmt.

                    ./configure \   --with-php-config=/opt/php/526/bin/php-config \   --with-freetype-dir=/usr/lib \   --with-jpeg-dir=/usr/lib \   --with-t1lib-dir=/usr/lib

                    Soweit sehen meine configure-Argumente aus. Die Bibliotheken sind ja schon da und Du musst sie ja nicht nochmals extra erstellen (auch wenn Debian Versionen hat, die schon eine Patina aufweisen ;).

                    Und dann soll der Selbstbau ja eigentlich auch ein Update verkraften.
                    Ich bin mir noch nicht klar darüber, ob 'einmal Selbstbau' nicht 'immer Selbstbau' bedeutet?

                    Wenn Debian irgendwann ein neues Paket von PHP hat, kannst Du das ganz normal über den Paketmanager einpflegen. Du wirst aber beim Selberbauen (vielleicht nicht gleich bei den ersten zehn Versuchen) Das Licht, was absolute Freiheit bedeutet, erblicken können.

                    Das wäre nicht so das erwünschte Ziel. Denn es gibt immer mal wieder die Anforderung, "mal eben schnell" einen Server aufzusetzen für einen Kunden. Und da mag ich eigentlich keine Hampelei. Die Liste der installierten Module wird mit "dgkg --get-selections" dokumentiert und dann ist es gut.
                    Das funktioniert aber mWn nicht mehr, wenn ich anfange, selber darin herumzufummmeln.

                    Jain. T u T -> Vereinfachungen
                    So mache ich das für Webserver und PHP weil ich zu faul bin mir einen gesamten Makefile zu schreiben.

                    Bevor ich irgendwelche maßgeblichen Änderungen an Kundensystemen vornehme, baue ich immer einen Clone zum Experimentieren. Das dauert i.d.R bei Debian ca. 2 Stunden, bei Suse (mit dem alten Yast) kann es schon mal 6 Stunden dauern.

                    Ich brauche für das Zusammenstellen aus den Sourcen für alles auch so meine 2 Stunden. Danach sind die Bibliotheken und Binäre allerdings auch optimal auf die Hardware abgestimmt.

                    Von den wichtigsten Kunden habe ich ihr aktuelles Systemabbild auf Wechsel-Festplatte liegen, natürlich nur mit Musterdaten, denn einige bringen es durchaus auf über 500GB Datenbestand...

                    Nimm Dir irgendwann mal viel Zeit und fange an einfach nur mit PHP ein CLI eigens zu erstellen. Dafür brauchst Du erstmal keine root-Rechte und kannst somit nichts systemweit überschreiben. Probiere Dich aus (z. B. Compiler-Flags abstimmen oder exotische Erweiterungen von http://pecl.php.net/ modular zu bauen)! Du wirst schnell sehen, was Du an der Shell automatisieren kannst, sodass Dir die Arbeit nach dem X-ten Ablauf nicht mal neben dem Kaffee einen müden Blick abverlangt, weil es nix für Dich zu tun gibt und nur der Compiler beflissen zusammen klebt.

                    Gruß aus Berlin!
                    eddi

                    --
                    Diese Nachricht ist made in Rixdorf und wurde mittels 100% recycelter Elektronen verfasst.
                    Und der Strom? Äh - kommt aus der Steckdose! :)