PHPMailer verursacht [error] signal 11 bei SMTP Versand

Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Hallo!

Seit dem Update auf PHP 5.3 seitens HostEurope verursacht der PHPMailer, sobald man $mail->IsSMTP(); aufruft, folgendes im Log:
[error] child died with signal 11
Die E-Mail wird zwar merkwürdigerweise trotzdem versendet aber Apache liefert keine Seite mehr zurück, d.h. Chrome meldet:
Fehler 324 (net::ERR_EMPTY_RESPONSE): Server hat die Verbindung geschlossen. Es wurden keine Daten gesendet.
Weiß jemand Rat?
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von xmurrix »

Hallo Phiga,

der Aufruf von $mail->IsSMTP(); sollte keine Probleme machen, da man hier eine simple Methode aufruft, die eine Eigenschaft setzt.

Wie sieht denn der Code aus, mit der die Mail versendet wird?

Die Fehlermeldung "[error] child died with signal 11" ist wohl vom Webserver. Es scheit ein Problerm mit der PHP Konfiguration auf dem Server zu geben.

Welche PHP-Erweiterungen sind denn aktiv? Falls APC-Cache aktiv ist, deaktiviere es mal testweise...

Das wäre hilfreich für uns, wenn wir dir helfen sollen.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Hallo xmurrix,
danke für Deine Hilfe! Ich habe noch vergessen zu erwähnen, dass ich Contenido in der Version 4.8.15 verwende.
Wie sieht denn der Code aus, mit der die Mail versendet wird?

Code: Alles auswählen

$mail = new phpmailer;
$mail->AddAddress("CMS_VALUE[1]", "");
$mail->Subject = "CMS_VALUE[3]";
$mail->From = $_POST['email'];

$fromname = $title->getValue()?' '.$title->getValue():'';
$fromname .= ' '.$forename->getValue().' '.$surname->getValue();

$mail->FromName = $fromname;
$mail->Body = $body;
$mail->CharSet = "utf-8";
$mail->Host = "localhost";
$mail->IsHTML(false);
switch (strtolower("CMS_VALUE[4]")) {
    case "smtp" :
        $mail->IsSMTP();
        $host = "CMS_VALUE[5]";
        $user = "CMS_VALUE[6]";
        $password = "CMS_VALUE[7]";
        if (($host != '') && ($user != '') && ($password != '')) {
            $mail->SMTPAuth = true;
            $mail->Host = $host;
            $mail->Username = $user;
            $mail->Password = $password;
        }
        break;
    case "mail" :
        $mail->IsMail();
        break;
    case "sendmail" :
        $mail->IsSendmail();
        break;
    case "qmail" :
        $mail->IsQmail();
        break;
    default :
        }
$mail->Send();
Kommentiere ich "$mail->IsSMTP();" aus, gibt es keinen "[error] child died with signal 11"-Fehler mehr. Eine Mail natürlich nicht.
Kommentiere ich dagegen "$mail->Send();" aus, bleibt der Fehler bestehen. In diesem Fall gibt's natürlich auch keine Mail ;-)
Welche PHP-Erweiterungen sind denn aktiv?
URL zur phpinfo sende ich Dir per PM
Falls APC-Cache aktiv ist, deaktiviere es mal testweise...
APC ist nicht aktiv
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Hier noch ein Nachtrag, die Analyse von HE:
Unsere Systemadministration hat festgestellt, dass der segmentation fault auftritt, wenn die Rückgabewerte der Session-Aktualisierung aus der Datenbank gelesen werden. Hier finden Sie die entsprechende strace-Ausgabe:

Code: Alles auswählen

access("/is/htdocs/wpXXXXXXX_YYYYYYYYYY/www/contenido/classes/class.iterator.php", F_OK) = 0
time(NULL) = 1347710867
access("/is/htdocs/wpXXXXXXX_YYYYYYYYYY/www/contenido/classes/class.iterator.php", F_OK) = 0
time(NULL) = 1347710867
access("/is/htdocs/wpXXXXXXX_YYYYYYYYYY/www/contenido/classes/class.iterator.php", F_OK) = 0
time(NULL) = 1347710867
gettimeofday({1347710867, 53648}, NULL) = 0
access("config.after.php", F_OK) = -1 ENOENT (No such file or directory)
time(NULL) = 1347710867
poll([{fd=17, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(17, "\363\v\0\0\3update con_phplib_active_ses"..., 3063) = 3063
read(17, "0\0\0\1\0\1\0\2\0\0\0(Rows matched: 1 Chan"..., 16384) = 52
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
chdir("/etc/httpd") = -1 EACCES (Permission denied)
rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0
kill(24046, SIGSEGV) = 0
sigreturn() = ? (mask now [])
Uns ist auch aufgefallen, dass sich in den Session-Daten größere Menge Base64-codierten PHP-Codes bzw. Arrays befinden.

Der obige strace deutet auf einen Zusammenhang mit der Session-Verwaltung.
Damit ist es aus HE-Sicht ein "Anwendungsproblem".

Ich habe daraufhin der Ordnung halber die Tabelle con_phplib_active_sessions untersucht.
Sowohl Leeren als auch Löschen und Wiederanlegen mit

Code: Alles auswählen

DROP TABLE  `con_phplib_active_sessions`;
CREATE TABLE `con_phplib_active_sessions` (
  `sid` varchar(32) NOT NULL default '',
  `name` varchar(32) NOT NULL default '',
  `val` longblob,
  `changed` varchar(14) NOT NULL default '',
  PRIMARY KEY  (`sid`)
) TYPE=MyISAM
brachten keinen Erfolg.

Hat noch jemand eine Idee oder ähnliche Erfahrungen?

Für jede Hilfe dankbar
Phiga
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von xmurrix »

Hallo Phiga,

denke nicht, dass es sich um ein Anwendungsproblem handelt.

Beim Versenden einer E-Mail per phpMailer wird gar nichts in die Session geschrieben, oder aus der Session ausgelesen. Das Auslesen aus der Session findet am Anfang der Applikation statt und das Speichern der Änderungen am Ende der Applikation. Die E-Mail wird mitten drin versendet.

Sehr wahrscheinlich ist es ein Problem im System. Laut PHP-Info sind ionCube PHP Loader, Zend Guard Loader und Suhosin Patch drauf. Ich kann mir vorstellen, dass die Kombination der drei Erweiterungen Probleme bereiten kann. Das muss aber nicht sein, ist nur eine Vermutung. Wenn man nach "[error] child died with signal 11" googelt, findet man einige User mit dem Problem...

Zum "segmentation fault" Problem:
Eigentlich werden primitive Variablentypen (integer, string, boolean, usw) in der Session gespeichert, höchstens mal Arrays, die wiederum auch skalare primitive Typen enthalten, also keine Objekte. Es kann aber sein dass hier der Zend Guard Loader, warum auch immer, einen Strich durch die Rechnung macht.

Vielleicht is die restriktive Konfiguration des Servers in diesem Fall suboptimal. Admins wollen immer alles sicher haben, Anwendungen brauchen auch etwas Freiraum zum Atmen. Vielleicht sollte man hier einen Kompromiss finden :-)

Ich würde ionCube PHP Loader, Zend Guard Loader und Suhosin Patch mal deaktivieren und die Apllikation so testen. Dann Stück für Stück wieder aktivieren...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Hallo xmurrix!

Alles wirkungslos:

Code: Alles auswählen

php_flag suhosin.simulation On
php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0
php_value zend_optimizer.optimization_level = 0
Ich habe nach langem Probieren herausgefunden, dass ein exit(0) am Ende des Layouts Seite als Workaround hilft:

Code: Alles auswählen

…
</body></html>
<?php if ($formsent) exit(0); ?>
Das darf man allerdings nur machen, wenn ein Formular versendet wurde. Ich setze in diesem Fall die Variable $formsent=true ).
Führt man exit(0); immer aus, kann man nicht mehr auf der Seite Navigieren.

Ziemlich vertrackt, das Ganze…

Gruß
Phiga
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von xmurrix »

Hallo Phiga,

da fällt mir was ein.

Wenn das mit einem exit am Ende des Layout funktioniert, dann könnte es nähmlich beim Schreiben der Session passieren. Das Schreiben findet am Ende der front_content.php beim Aufruf von page_close() statt.

Falls das so ist, wäre es interessant zu wissen, was alles im Formular-Modul alles in der Session gespeichert wird...

Wenn im Formularmodul z. B. die verndendeten Daten gespeichert werden, z. B. $sess->register('name') und die globale Variable name ein Objekt ist oder später in einem anderen Modul überschrieben wird, könnte das die Ursache sein.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Hallo xmurrix,

danke für den Tipp! Das mit der Session würde ja zur Analyse von HE passen. Allerdings benutze ich in den Formularen keine einzige Session-Variable. Ich poste die Formulardaten von Seite zu Seite in INPUTs, teils hidden.

Die front_content.php werde ich mir aber nochmals genauer ansehen. Bestimmt lässt sich die Ursache weiter einkreisen.

Gruß
Phiga
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von xmurrix »

Und, bist du hier schon weiter gekommen? Frage deshalb, weil mich das Thema schon interessiert...

Es kann auch sein, dass per POST/GET übermittelte Variablen die Variablen für die Session überschreiben. Was für Formularfelder (name-Attribute) gibt es denn?
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Mir ist es auch wichtig, dass wir Contenido so robust wie möglich machen. Ich habe zahlreiche Contenido-Installationen live und möchte nicht nochmals ins Messer laufen. Außerdem ist der Workaround eben nur ein Workaround. Er sollte bald wieder ausgebaut werden.

Heute und morgen fehlt mir zur Fehlersuche allerdings die Zeit. Ich sehe zu, dass ich die Tage danach Zeit finde und melde mich auf jeden Fall mit einem Ergebnis hier zurück – versprochen!
Phiga
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Oldperl »

Hallo Phiga,

du solltest die Klasse PHPMailer updaten, die Klasse in der 4.8.15 ist nicht kompatibel zu neueren PHP-Versionen und könnte daher der Grund für dein Problem sein. Ich habe das gemacht in der ConLite und dort funktioniert der Emailversand auch bei HostEurope. Zumindest habe ich bisher noch keine anderweitige Rückmeldung bekommen.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Phiga »

Kleines Zwischenergebnis: HE hat den Zend Guard Loader zeitweise abgestellt und das Problem trat nicht mehr auf.
Ich versuche es weiter einzukreisen.

@Ortwin: könntest Du mir bitte Deine aktualisierte PHPMailer-Klasse zukommen lassen? Danke!
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Spider IT »

Hallo Phiga,
Oldperl hat geschrieben:Ich habe das gemacht in der ConLite und dort funktioniert der Emailversand auch bei HostEurope.
In den nächsten Tagen kommt die Beta 2 der ConLite raus, dann mach doch ein Upgrade darauf.
Ich setze diese schon länger für Projekte ein und habe keine Nachteile gegenüber Contenido 4.8.15 festgestellt.
Ganz im Gegenteil funktioniert die ConLite 2.0 Beta 2 bereits stabiler.

Gruß
René
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von xmurrix »

Spider IT hat geschrieben:
Oldperl hat geschrieben:Ich habe das gemacht in der ConLite und dort funktioniert der Emailversand auch bei HostEurope.
In den nächsten Tagen kommt die Beta 2 der ConLite raus, dann mach doch ein Upgrade darauf.
Ich setze diese schon länger für Projekte ein und habe keine Nachteile gegenüber Contenido 4.8.15 festgestellt.
Ganz im Gegenteil funktioniert die ConLite 2.0 Beta 2 bereits stabiler.
Ein Update auf ConLite wird das Problem mit dem Zend Guard Loader nicht lösen, verkauft hier bitte keine falschen Tatsachen.

Es ist kein Problem, die Funktionalität einer Applikation zu brechen, weil das von vielen anderen Systemen und deren Einstellungen abhängt, auch die von ConLite.

Außerdem solltet ihr beide (Ortwin & René) wissen, dass man hier im CONTENIDO Forum nicht für fremde Produkte werben sollte, macht das bitte woanders.

Grüße
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: PHPMailer verursacht [error] signal 11 bei SMTP Versand

Beitrag von Spider IT »

Murat,
xmurrix hat geschrieben:verkauft hier bitte keine falschen Tatsachen.
Das tue ich nicht, ich antworte lediglich auf eine Frage.
Wenn jemand den PHPMailer aus ConLite haben möchte (danach fragt), ist die Antwort natürlich, auf ConLite zu upgraden.
xmurrix hat geschrieben:Außerdem solltet ihr beide (Ortwin & René) wissen, dass man hier im CONTENIDO Forum nicht für fremde Produkte werben sollte, macht das bitte woanders.
Genauso darf man keine vollständigen Beiträge zitieren, schon erst recht nicht wenn sie direkt darüber stehen.

Gruß
René
Gesperrt