Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 26. Februar 2014 15:50

dylan
kennt CMS/ms
Ort: Münsterland
Registriert: 16. Dezember 2010
Beiträge: 303

CMSMailer + FormBuilder Fehler

CMS Version: 1.11.9
FormBuilder: 0.7.4
Mailmethode: sendmail

Ich habe ein Problem mit dem CMSMailer:

Warning: escapeshellcmd() has been disabled for security reasons in /www/htdocs/w0113d24/modules/CMSMailer/phpmailer/class.phpmailer.php on line 690
Bei der Verarbeitung des versandten Formulars ist ein Fehler aufgetreten.
Could not execute: /usr/sbin/sendmail

Mailadresse existiert, CMSMailer Einstellungen sind identisch mit denen anderer Sites die problemlos laufen.

Offline

#2 26. Februar 2014 15:53

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: CMSMailer + FormBuilder Fehler

Der Server ist aber mit Sicherheit nicht identisch.

escapeshellcmd() has been disabled for security reasons

Das sagt doch im Prinzip schon alles.
Das Modul versucht eine PHP-Funktion namens escapeshellcmd() zu verwenden die aber von Deinem Provider aus Sicherheitsgründen deaktiviert wurde.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 26. Februar 2014 15:58

dylan
kennt CMS/ms
Ort: Münsterland
Registriert: 16. Dezember 2010
Beiträge: 303

Re: CMSMailer + FormBuilder Fehler

Merkwürdig. Dann muss ich wohl Kontakt zum Provider aufnehmen um das prüfen zu lassen.
Danke, nun habe ich zumindest einen Anhaltspunkt.

Offline

#4 26. Februar 2014 16:27

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: CMSMailer + FormBuilder Fehler

Ich vermute einfach mal, Dein Provider hat pauschal einfach alles, was nach Kommandozeilen-Funktion aussieht, deaktiviert. Die Funktion escapeshellcmd() stellt in diesem Fall aber meiner Meinung nach kein Sicherheitsrisiko dar. Sie führt ja selbst keine Befehle aus, sondern formatiert nur ein Stück Text, damit man es eventuell für die Kommandozeile verwenden könnte.

Für den (nicht unwahrscheinlichen) Fall, dass Dein Provider diese Funktion trotzdem nicht freischaltet, kannst Du auch im PHP Code in der Datei "/modules/CMSMailer/phpmailer/class.phpmailer.php" in Zeile  687 bis 691 die Funktion mal rausnehmen.

Original-Code:

if ($this->Sender != '') {
      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
} else {
      $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
}

geändert:

if ($this->Sender != '') {
      $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);
} else {
      $sendmail = sprintf("%s -oi -t", $this->Sendmail);
}

Damit hebelst Du allerdings einen Mechanismus aus, der extra aus Sicherheitsgründen eingebaut wurde.

Im Prinzip geht es darum, eine Verbindung zu einem Prozess zu starten (in dem Falle sendmail). Dazu wird der Pfad zum sendmail Programm benötigt. Diesen Pfad kann man im Backend selber angeben. Um nun zu verhindern, dass in diesem Pfad weitere Kommandos stehen, die auf dem Server wer weiß was in Gang setzen könnten, wird dieser Pfad von möglichen Kommandozeilen-Parametern mit dieser Funktion escapeshellcmd() bereinigt, bevor man ihn verwendet.

Wenn diese Funktion aber nicht erlaubt ist, "verpufft" dieser Pfad. Und dann versucht man eine Verbindung zu einem Prozess zu starten, der nicht existiert. Dann klappt auch alles weitere nicht mehr.

Es ist allerdings möglich, dass die Funktion popen() ebenfalls deaktiviert wurde. Dann kannst Du sendmail leider komplett vergessen. Du erhältst in diesem Fall leider auch keine Fehlermeldung, da im PHP-Code mit dem @-Operator Fehlermeldungen unterdrückt werden. Schau einfach mal mit einem UDT/Plugin nach, welche Funktionen so alles deaktiviert sind bevor Du Deinem Provider auf den Keks gehst:


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 26. Februar 2014 19:16

dylan
kennt CMS/ms
Ort: Münsterland
Registriert: 16. Dezember 2010
Beiträge: 303

Re: CMSMailer + FormBuilder Fehler

Der Provider ist All-INKL
PHP Version ist 5.4.24-nmm1. phpinfo(); hatt ich vorab natürlich gecheckt, um zu sehen ob sendmail überhaupt aktiv ist. sendmail ist aktiv. "popen" ist unter "disable_functions" zu finden.

Ich habe dem Provider die Fehlermeldung heute geschickt und bekam folgende Antwort:

"Um die Befehle exec(), system(), passthru(), shell_exec(), popen() oder ini_restore() in einem Script nutzen zu können, sollten sie auf die CGI Variante von PHP umschalten. Sie haben dahingehend 2 Möglichkeiten:

1. Sie geben der betreffenden Datei die Endung .phpx
2. Sie erzeugen eine Datei mit dem Namen .htaccess in den Verzeichnis wo Dateien über PHP CGI geparsed werden sollen. In diese Datei schreiben Sie folgenden Inhalt:

AddHandler php5-cgi .php
(bei PHP 5)

Bitte beachten Sie, dass bei PHP-CGI strengere Restriktionen für Ressourcen gelten. Sie sollten daher möglichst nicht die gesamte Seite auf PHP-CGI laufen lassen, da bei sehr komplexen Operationen die Prozesse abgebrochen werden koennen."

Mein technisches Verständnis reicht nicht aus, um zu verstehen, wo ich hier ansetzen muss.
Natürlich kann ich der .htaccess den 'AddHandler php5-cgi .php' Inhalt hinzufügen, bin mir aber nicht sicher ob das wirklich Not tut, da ich bisher niemals Probleme hatte?

Was hälst Du von der Antwort des Support?

Offline

#6 01. März 2014 11:08

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.231
Webseite

Re: CMSMailer + FormBuilder Fehler

Gehe nach FormBuilder: 0.7.3
die 0.7.4 hat Problemen und ist aus der Repository genommen.

mfg
Jan


Kubuntu 22.04 - Win 11 pro / Kubuntu 20.04  - win10 pro

Offline

#7 03. März 2014 10:11

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: CMSMailer + FormBuilder Fehler

Gehe nach FormBuilder: 0.7.3
die 0.7.4 hat Problemen und ist aus der Repository genommen.

Der Fehler stammt aber doch aus dem CMSMailer und nicht aus dem FormBuilder.

Was hälst Du von der Antwort des Support?

Ist meiner Meinung nach eine klare Ansage.

Wenn es unbedingt sendmail sein muss, und CGI keine Probleme bereitet (gibt da so die in oder anderen Probleme mit include- , session- und tmp-Pfaden), dann würde ich einfach im Root Deines CMS in einer .htaccess-Datei diesen Handler einfügen. Nur einzelne Teile des CMS im CGI Mode ausführen zu wollen, ergibt hier meiner Meinung nach keinen Sinn (ich wüsste nicht, ob das im konkreten Fall hier überhaupt funktionieren würde).

Ansonsten sollte die mail-Methode auch unter den Standard-Bedingungen funktionieren (hab den Code nur überflogen und keine besonderen Funktionen gesehen) - wenn Du nicht unbedingt vorhast, massenweise Mails zu versenden (die mail-Methode ist da von der Performance her schlechter).


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#8 03. März 2014 10:20

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.231
Webseite

Re: CMSMailer + FormBuilder Fehler

@NaN
ich habe einige kompliziertere Formulare die nach der Update nicht mehr gut funktioniert haben, es gibt eine Reihe Sachen die (noch) nicht gut funktionieren in 0.7.4 deswegen meine Rat gehe nach 0.7.3 da kann man wenigstens sciher sein, dass der Module gut funktioniert.

mfg
Jan


Kubuntu 22.04 - Win 11 pro / Kubuntu 20.04  - win10 pro

Offline