Ankündigung

Einklappen
Keine Ankündigung bisher.

$_POST file bringt "500 - Interner Serverfehler"

Einklappen

Neue Werbung 2019

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

  • $_POST file bringt "500 - Interner Serverfehler"

    Hi,
    ich habe folgendes PHP-Skript:
    Code:
    <?php
        require 'libs/PHPMailer/PHPMailerAutoload.php';
        $mail = new PHPMailer;
        $mail->SMTPDebug = 0;
        $mail->setFrom('###', 'Sender');
        $mail->addAddress('###', 'User');
        $mail->Subject  = 'Request';
    
        $body = file_get_contents('mail_template.html');
        $body = str_replace('%ContactName%', $_POST['ContactName'], $body);
        $body = str_replace('%ContactEmail%', $_POST['ContactEmail'], $body);
    
        $mail->MsgHTML($body);
        $mail->IsHTML(true);
        $mail->CharSet="utf-8";
    
        $mail->isSMTP();
        $mail->SMTPOptions = array(
            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            )
        );
        $mail->Host = 'smtp.gmail.com';
        // optional
        // used only when SMTP requires authentication
        $mail->Port = 587;
        $mail->SMTPAuth = true;
        $mail->Username = '###';
        $mail->Password = '###';
    
        if(!$mail->send()) {
          echo 'Message was not sent.';
          echo 'Mailer error: ' . $mail->ErrorInfo;
        } else {
          echo 'Message has been sent.';
        }
    ?>
    Und dazu folgende HTML-Form:
    Code:
    <!DOCTYPE html>
    <html>
        <body>
            <form action="mail_handler.php" method="post" enctype="multipart/form-data">
                Name: <input type="text" name="ContactName"><br>
                Mail: <input type="text" name="ContactEmail"><br>
    
                Select image of the product:
                <input type="file" name="Image">
    
                <input type="submit" value="submit">
            </form>
        </body>
    </html>
    Nun zu meinem Problem. Wenn ich lediglich die Textfelder ausfülle, wird meine Mail einwandfrei versendet. Sobald ich ein File anghänge kommt 500 - interner Serverfehler. Habe txt und png probiert, jeweils nur wenige kb groß (<50kb). In meiner PHP.ini sind folgende Parameter gesetzt:
    max_execution_time 30 30
    max_file_uploads 20 20
    upload_max_filesize 2M 2M
    upload_tmp_dir no value no value
    P.s.: Ich habe mit Absicht im PHP-Skript den Fileinput nicht verarbeitet, um diese Fehlerquelle auszuschließen.

    Hat jemand Ideen?

    Cheers

  • #2
    Was genau der Fehler ist dürfte im error_log stehen. Wo du den findest weiss normalerweise dein Hoster. Oder du selbst.

    Kommentar


    • #3
      Derzeit ist error reporting off. Ich muss also warten bis das entsprechend gesetzt ist. Ich weiß dass man dadurch nur raten kann woran es liegt. Konnte die Ursache aber schon etwas eingrenzen, indem ich ein normales Upload skript habe (ohne POST). Der 500 error kommt dennoch. Mit fopen kann ich zumindest ein simples txt File erstellen, das heißt die Permissions passen. Max file size, timeout, ... in der php.ini sind zu meinem lokalen Testsystem gleich, bis auf die upload_tmp_dir. Kann das den Unterschied machen? Die upload_tmp_dir ist beim Hoster nicht gesetzt, damit wird ja eine Default-Directory genutzt!? Kann das ein Firewall-Problem sein?

      Kommentar


      • #4
        Gugg: http://php.net/manual/de/function.sys-get-temp-dir.php

        Kommentar


        • #5
          upload_tmp_dir NULL PHP_INI_SYSTEM
          Da brauchste eine eigene php.ini. Wenn das dein Hoster nicht unterstützt und du keine Permissions auf den default /tmp hast, wirds schwierig. Such dir einen besseren Hoster.

          Kommentar


          • #6
            Es war tatsächlich die fehlende Angabe zur upload_tmp_dir. Im lokalen System lief es trotzdem. Danke, das hat mein Problem gelöst

            Kommentar

            Lädt...
            X