ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
[Gelöst] Umstellung von PHP 5.4 auf PHP 5.6 macht Problem

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4)
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 19:15    Titel: [Gelöst] Umstellung von PHP 5.4 auf PHP 5.6 macht Problem Antworten mit Zitat

Seit der Umstellung auf PHP 5.6 funktioniert die Mail-Kodierung nicht mehr richtig. In den Einstellungen von mod_form habe ich "ISO-8859-1 erzwingen" gewählt und das soll auch so bleiben.

Unter PHP 5.6 erscheinen dann plötlzich die Umlaute im Betreff nicht mehr korrekt und der Mail-Body ist ganz leer. Ausprobiert habe ich es sowohl bei 1&1 als auch bei All-Inkl.

Beispiel einer unter PHP 5.4 generierten Mail:
Code:
Return-Path: <info@########.de>
Received: from [217.72.192.67] ([217.72.192.67]) by mx.kundenserver.de
 (mxeue104) with ESMTPS (Nemesis) id 0MZySV-1aUcNg1Irv-00LpAE for
 <########@########.de>; Mon, 21 Mar 2016 15:10:19 +0100
Received: from dd15816.kasserver.com ([85.13.136.250]) by mx.kundenserver.de
 (mxeue104) with ESMTPS (Nemesis) id 0Mg3G9-1aNTW21EsH-00NRie for
 <formulartest@########.de>; Mon, 21 Mar 2016 15:10:19 +0100
Received: by dd15816.kasserver.com (Postfix, from userid 1020)
   id 5C1F45B8410D; Mon, 21 Mar 2016 15:10:17 +0100 (CET)
To: formulartest@########.de
Subject: Nachricht =?ISO-8859-1?Q?=FCber=20Kontakt-Formular?=
From: formulartest@########.de
Cc:
Reply-To: formulartest@########.de
Content-Type: text/plain; format=flowed; charset="ISO-8859-1"
X-Mailer: mod_form by conpresso4.de
Message-Id: <20160321141017.5C1F45B8410D@dd15816.kasserver.com>
Date: Mon, 21 Mar 2016 15:10:17 +0100 (CET)
Envelope-To: <guenther@########.de>

Folgende Daten wurden am 21.03.2016 um 15:10 Uhr über das Kontakt-Formular von www.########.de übermittelt:

Name: Günther Noch ein Test

E-Mail-Adresse: formulartest@########.de

Telefon:


Mitteilung:

Noch ein Test: äöüÄÖÜ€
Und mit genau dem selben ins Nachrichten-Feld des Formulars eingegebenen Text unter PHP 5.6:
Code:
Return-Path: <info@########.de>
Received: from [212.227.15.41] ([212.227.15.41]) by mx.kundenserver.de
 (mxeue008) with ESMTPS (Nemesis) id 0M5dph-1ZpFB52tCa-00xZ9j for
 <guenther@########.de>; Mon, 21 Mar 2016 15:14:19 +0100
Received: from dd15816.kasserver.com ([85.13.136.250]) by mx.kundenserver.de
 (mxeue008) with ESMTPS (Nemesis) id 0LaEeN-1a43092aXm-00m63d for
 <formulartest@########.de>; Mon, 21 Mar 2016 15:14:19 +0100
Received: by dd15816.kasserver.com (Postfix, from userid 1020)
   id 566B85B8410D; Mon, 21 Mar 2016 15:14:17 +0100 (CET)
To: formulartest@########.de
Subject: Nachricht =?ISO-8859-1?Q?=3Fber=20Kontakt-Formular?=
From: formulartest@########.de
Cc:
Reply-To: formulartest@########.de
Content-Type: text/plain; format=flowed; charset="ISO-8859-1"
X-Mailer: mod_form by conpresso4.de
Message-Id: <20160321141417.566B85B8410D@dd15816.kasserver.com>
Date: Mon, 21 Mar 2016 15:14:17 +0100 (CET)
Envelope-To: <########@########.de>





Im entsprechenden Formulardaten-Artikel erscheinen die Daten richtig - s. Screenshot
mod_form.php_5.6.jpg
Klicken für Originalbild! mod_form.php_5.6.jpg (19.62KB) - 83 mal angeklickt



_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen


Zuletzt bearbeitet von Mr. Magpie am 23.03.2016 10:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6912

BeitragVerfasst am: 21.03.2016 19:57    Titel: Antworten mit Zitat

Prüfe mal, ob das Formular bei der Eingabe als ISO oder UTF codiert wird.
Die Default-Einstellung von 1&1 bei 5.6 ist leider UTF-8.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 20:14    Titel: Antworten mit Zitat

Wie finde ich das heraus?

Wenn ich mir im Browser Quelltext bzw. Seiteninformationen der Formularseite ansehe, ist die ISO-8859-1. Eine entsprechende Zeile befndet sich in der ../_include/common.inc.php:

header('Content-type: text/html; charset=ISO-8859-1');

Aber mail() schert sich nicht darum

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 20:23    Titel: Antworten mit Zitat

Alle charsets sind defaultmäßig auf "no value" laut phpinfo()

Das habe ich zwar gefunden: https://www.saotn.org/php-56-default_charset-change-may-break-html-output/

Aber der default_charset lässt sich nicht per php.ini ändern

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6912

BeitragVerfasst am: 21.03.2016 20:38    Titel: Antworten mit Zitat

Im IE per Rechtsklick bei Codierung zu sehen (siehe Bild).

Bei 1&1 lässt es sich prima einstellen wenn man in JEDES Verzeichnis eine php.ini mit folgendem Inhalt stellt:
Code:
default_charset = "iso-8859-1"

Habe ich erst gestern durchexerziert.
Mit Shell-Zugriff reicht auch eine, die per Symbolic-Link in alle Verzeichnisse gespiegelt wird. Anleitung in den FAQ.

Aber eigentlich sollte die Header-Zeile reichen.

Die Konvertierung des Betreffs übernimmt ja die Funktion mb_encode_mimeheader, dann muss aber auch mit der richtigen Codierung gefüttert werden. Daher dachte ich an falsche Codierung der Formularseite.





codierung.jpg
Klicken für Originalbild! codierung.jpg (128.83KB) - 99 mal angeklickt



_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 21:01    Titel: Antworten mit Zitat

Bei 1&1, da gebe ich dir Recht, kann ich den default_charset per php.ini beeinflussen.
Die Betreffzeile wird auch da falsch codiert, aber der Mail-Body enthält wenigstens den richtigen Inhalt.

Nicht so bei All-Inkl. Aber mein Kunde ist nun endlich von der Telekom zu All-Inkl gewechselt und daher muss es jetzt dort irgendwie klappen.

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6912

BeitragVerfasst am: 21.03.2016 21:05    Titel: Antworten mit Zitat

Und wie wird jetzt das Formular, also die Seite wo man die Daten eintippt, codiert?
_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 21:09    Titel: Antworten mit Zitat

wie es sich gehört: ISO-8859-1
_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6912

BeitragVerfasst am: 21.03.2016 21:19    Titel: Antworten mit Zitat

Tja, da helfen dann nur ein Stapel Kontrollausgaben.

Nach Ostern werde ich das mal auf PHP 5.6 und 7 probieren.

1&1 bietet einen verlängerten Support für PHP 5.4.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 21:26    Titel: Antworten mit Zitat

Aber es geht ja um All-Inkl, so dass ich dort auf PHP 5.4 wieder wechsle.
Andere Kunden - die meisten - sind allerdings bei 1&1

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6912

BeitragVerfasst am: 21.03.2016 21:51    Titel: Antworten mit Zitat

Bei All-Inkl kann ich aber nicht testen.
_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 21.03.2016 21:55    Titel: Antworten mit Zitat

Da würde ich dir ggf. was zu einrichten. Okay?
_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 22.03.2016 00:10    Titel: Gelöst!! Antworten mit Zitat

Ich habe es jetzt gelöst bekommen Cool

Das Problem bestand aus mehreren Teilen:

a) Konnte ich bei All-Inkl die nötigen Einstellungen nicht durch eine php.ini setzen. Die php.ini wurde schlichtweg ignoriert.

b) Die Codierung des Mail-Body erfolgt anders als die der Betreff-Zeile, es brauchte folglich auch zwei verschiedene Lösungen


Zunächst zum Mailbody:

Dieser war unter PHP 5.6 stets komplett leer!!
Daran änderte sich nichts, ganz gleich, welchen Wert $encoding in der Zeile
Code:
$contentType = 'Content-Type: text/plain; format=flowed; charset="'. $encoding . '"' . $newline;

von ../mod_form/includes/actions.inc.php annahm.
Bald war mir klar, das musste an der default_charset-Einstellung liegen, welche bei mir (All-Inkl) laut phpinfo() immer "no value" hatte.
Hier fand ich, dass ich den default_charset auch über die .htaccess im Root-Verzeichnis von ConPresso setzen konnte.
Ich hab' dann also in die .htaccess die Zeile
Code:
php_value default_charset ISO-8859-1
eingefügt... und schon ging's! Smile


Die Betreffzeile:

Wie Markus erwähnte, wird diese per mb_encode_mimeheader() codiert.
Wenn ich diese Funktion in ../mod_form/includes/actions.inc.php ganz weg ließ, blieb die Betreffzeile uncodiert, aber alle Umlaute blieben erhalten (getestet in Thunderbird).
In php.net las ich hier, dass die Funktion mb_encode_mimeheader() abhängig ist von einem korrekt gesetzten Wert von mbstring.internal_encoding. Auch diese Einstellung hatte bei All-Inkl "no value".

Diesen setzte ich nun analog zum default_charset in der .htaccess-Datei:
Code:
php_value mbstring.internal_encoding ISO-8859-1


Bingo - das war's!! Very Happy Very Happy Very Happy

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 31.03.2016 20:37    Titel: [gelöst] php_value -> Internal Server Error 500 Antworten mit Zitat

Bei 1&1 führt die Verwendung von php_value in der .htaccess-Datei zu einem Internal Server Error 500.

Aber auch bei Shared Webhosting-Paketen bei 1&1 kann man die notwendigen Einstellungen zentral setzen! Very Happy

Und zwar erstellt man eine Textdatei names ".user..ini" (wichtig ist der Punkt vor "user") im ConPresso-Root-Verzeichnis mit folgendem Inhalt:
Code:
default_charset = "iso-8859-1"
mbstring.internal_encoding = "iso-8859-1"


Diese Einstellung gilt dann auch in allen Unterverzeichnissen Cool

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4) Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen