HILFE: Interner Serverfehler??

  • Hallo!
    Ich hab ne Website wo man Fotos hochladen kann. Die Fotos werden nach dem Hochladen in die richtige Größe gebracht und in eine Gallerie eingebunden. Das hat bisher auch alles wunderbar geklappt. Bis jetzt! Ich habe nichts geändert, aber jetzt kommt plötzlich beim Hochladen:
    "HTTP 500 Interner Serverfehler
    Wahrscheinlichste Ursachen:
    Die Website wird momentan gewartet.
    Die Website enthält einen Programmierfehler. "

    Ausser wenn man die Bilder in der richtigen Größe hochläd, dann gehts...
    Was kann ich machen?? Bin fast am Verzweifeln ;)
    Danke für eure Hilfe!

  • Ich nehm mal an, dass der Dienst mit PHP von statten läuft.
    Überprüfe dann, ob wichtige PHP-Servervariablen richtige (hohe) Werte haben:

    Relevante Variablen: max_execution_time, memory_limit, max_input_time, post_max_size, upload_max_filesize

    Ich denke jedoch, dass hierbei max_execution_time und memory_limit die wichtigsten Variablen sind

  • Danke für deine Antwort!
    Hab nachgeguckt

    max_execution_time: 30
    Wenn das Sekunden sind, klingt das nach nicht viel.

    memory_limit 64M
    Sollte kein Problem sein.

    Meint ihr dass es daran liegt?
    Wie kann man das ändern? Hab keinen Zugriff auf die php.ini-Datei...
    Oh man, meine Seite soll endlich wieder laufen :(

  • Danke für deine Hilfe, hab alles hochgesetzt:

    set_ini('max_execution_time', '500');
    set_ini('max_input_time', '500');
    set_ini('memory_limit', '128M');
    set_ini('post_max_size', '128M');
    set_ini('upload_max_filesize', '128M');

    Kommt leider der gleiche Fehler, auch wenn ich nur ganz kleine Bilder hochlade, die nur 2 Sekunden brauchen würden.
    Ich verstehs net, hab überhaupt nix geändert an der ursprünglichen Seite, und plötzlich taucht dieser Fehler auf.

    Habt ihr noch andere Ideen? Tipps was ich machen kann? Sollte ich mal meinen Webhost kontaktieren?

  • 500 Sekunden sind zu viel, 30 waren okay!
    Überleg mal diese Szenarien:
    -Du hast einen Bug übersehen und dann kommt ein Besucher und das Script wird 500 Sekunden lang ausgeführt, wenn der Benutzer bösartig ist, macht er das mehrfach, oder er ist gerade in einem anderen Tab und lässt das laufen, selbst wenn der User abbricht, könnte es sein, dass der Server so eingestellt ist, dass das Script weiterläuft.
    -Du willst einen Fehler ausmerzen und lässt dir dabei Variablen ausgeben, diese könnten dann die ganze Zeit in einer Endlosschleife ausgegeben werden, der Brwoser kommt mit Laden kaum hinterher und du musst 500 Sekunden warten, bis du die Ausgabe sehen kannst.

    Auf jeden Fall kann das den Server stark beeinträchtigen, vor allem wenn dabei viel Speicher noch ins Spiel kommt.
    64MB Sollten eigentlich auch reichen, du musst so rechnen: Wenn das Bild in den Speicher geladen wird, braucht jeder Pixel etwas 3Byte, selbst wenn du ein sehr großes Bild hast, gilt: 20MPx * 3Byte/Pixel = ca. 60MB, sollte also passen. Alternativ kannst du dir anschauen, wie viel Platz das Bild im tiff-Format verbraucht.

    Ich vermute eher, dass du in deinem Script über die Grenzen des Bildes hinausgehst und es dadurch nicht zum Stehen kommt, oder eben eine klassische Endlosschleife...

  • Hi, danke fuer eure Antworten. Das mit dem set_ini / ini_set ist mir sehr peinlich...

    Mein Skript lief vor einer Woche noch fehlerlos. Und da auch bei sehr kleinen Dateien der interne Serverfehler aufkommt, kann es ja eigentlich nicht an dem ini_set liegen, aber werd ich natuerlich trotzdem sofort ausprobieren, wenn ich zuhaus bin.
    @TheUser: Die grossen Werte hab ich nur zum Testen eingestellt

    Ich werd wohl auch nochmal das Skript checken muessen, vielleicht kommt da was bei rum.
    Klappt das mit dem ini_set eigentlich auf jeden Fall oder kann der Webhost das unterdruecken?
    Wenn ihr noch weitere Tipps habt, sagt bescheid!
    Danke!

  • Hmm, klappt auch nicht mit dem ini_set...
    Bin aber mitlerweile soweit zuwissen, dass es an der Thumbnail-Erstellung und dem Bild-Resize liegt. Ohne den Teil lädt er alles normal hoch.

    Hier der auslösende Resize-Quelltext:

    $dp = opendir("images/");
    while ($file = readdir($dp))
    {
    if (preg_match('(JPEG|JPG|jpg|jpeg)', "images/".$file))
    {
    $im = ImageCreateFromJPEG("images/".$file);
    $width = ImageSX($im);
    $height = ImageSY($im);
    if($width>800)
    {
    $var=$height / $width;
    $twidth = 800;
    $theight = $twidth * $var;
    $im2 = ImageCreateTrueColor($twidth,$theight);
    ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
    ImageJpeg($im2, "images/".$file, 70);
    }
    }
    }

    Was könnte einen internen Serverfehler auslösen?