Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Formular: Fehlermeldungen nach Versenden einer Nachricht mit mozilo Rev.51

Begonnen von rolinux, 27. Oktober 2018, 14:04:10

« vorheriges - nächstes »

rolinux

Hallo,

ich habe die Homepage www.badischer-dachshund.de grade auf mozilo 2.0 Rev. 51 aktualisiert.
Die eingestellte php-Version im Webspace ist noch 5.6.

Das Plugin "Formular" (Rev. 8) bringt Fehlermeldungen nach dem Versenden einer E-Mail:
ZitatWarning: preg_match_all() expects parameter 2 to be string, array given in /var/www/xxxx/html/bdc/plugins/Formular/index.php on line 407
Warning: preg_match_all() expects parameter 2 to be string, array given in /var/www/xxxx/html/bdc/plugins/Formular/index.php on line 428
Warning: strlen() expects parameter 1 to be string, array given in /var/www/xxxx/html/bdc/plugins/Formular/index.php on line 393

Gruß
Rolf

Edit von Thorstn: Kompletten Pfad zum Webspace durch xxxx ersetzt
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

rolinux

Nachtrag: Die Meldungen kommen auch, nachdem ich den Webspace auf php 7.2 umgestellt habe.

Gruß
Rolf
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

rolinux

"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

marusti

Kann den Fehler nicht nachproduzieren, bei mir geht es ohne Fehlermeldung durch.

rolinux

Ich meine das Plugin "Formular", mit dem man sich individuelle Kontaktformulare zusammenbasteln kann.
Das normale Kontaktformular, das moziloCMS mitbringt, funktioniert ohne Fehlermeldung.
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

marusti

sorry auch da kommt bei mir keine Meldung mit PHP 7.2.13
Vielleicht kann jemand anderes helfen bei dem die Meldung auch kommt.

rolinux

Ich habe mir mal die index.php des Plugins angeschaut (ohne wirklich Ahnung von php zu haben, aber vom Programmieren grundsätzlich schon...).

Die ersten beiden Fehlermeldungen finden in der Funktion private function findTagByAttrValue($attr,$value,$content = false) statt.
Wenn ich das richtig verstehe, wird hier die Variable $content mit dem Bool-Wert "false" erzeugt, was natürlich kein String ist, sondern Boolean. In den beiden Zeilen 407 und 428, wo diese Fehlermeldungen auftreten, ist die Variable $content der in der Meldung genannte Parameter 2.

Die Fehlermeldung in Zeile 393 könnte evtl. das gleiche Problem sein. Auch hier wird (nach meinem Verständnis) in Zeile 388 mit der Definition der Funktion private function findMailTextTag($attr,$value,$alternative = false,$content = false) die Variable $content mit dem Bool-Wert "false" gefüllt.

Korrigiert mich, wenn ich hier Müll geschrieben habe... ;-) (Ich weiß, dass Ihr alle den Code auch lesen könnt und von php mehr versteht als ich., aber ich hätte die Fehlermeldungen gerne weg...)

Ich habe grade mal nachgeschaut: Die Version des Plugins ist bei mir Revision 8. Gibts da was neueres? Und wie installiere ich das dann, ohne meine Formulare zu verlieren?

Gruß
Rolf
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

hausl78

Ja das ist aber nur der default Wert in der Funktionssignatur. Dh wenn beim Aufruf dieser für diesen Parameter kein Wert angegeben wird, dann wird das verwendet.

In der Fehlermeldung oben steht aber das hier ein Array statt einem String übergeben wurde, das ist das Problem.



preg_match_all('/.*/', 'foo', $m);   // foo ist hier ein String
// ok

preg_match_all('/.*/', ['foo'], $m);  // hier ist foo ein Array
// Warning:  preg_match_all() expects parameter 2 to be string, array given in ...



Das müsste man mit deinem Konkreten Code und Einstellungen debuggen, da es scheinbar nur bei dir auftritt. Kannst du mal in der Zeile darüber (also 406) ein var_dump() auf den 2. Parameter machen von dem

Schematisch:


var_dump($Parameter2);  // hier
preg_match_all($Parameter1, $Parameter2, $Parameter3); // Zeile 407



Dann kann man sehen was dieser bei dir enthält und dann muss man rausfinden warum bzw. wie es dazu kommt und so weiter. Schwierig wenn man das nicht nachstellen kann.

rolinux

Zitat von: hausl78 am 28. Dezember 2018, 09:49:25
Kannst du mal in der Zeile darüber (also 406) ein var_dump() auf den 2. Parameter machen von dem

Schematisch:


var_dump($Parameter2);  // hier
preg_match_all($Parameter1, $Parameter2, $Parameter3); // Zeile 407



Dann kann man sehen was dieser bei dir enthält und dann muss man rausfinden warum bzw. wie es dazu kommt und so weiter. Schwierig wenn man das nicht nachstellen kann.

Wenn ich das da reinschreibe, kommt das Formular gar nicht mehr, nur diese Meldung:
Parse error: syntax error, unexpected 'else' (T_ELSE) in /var/www/ud18_368/html/bdc/plugins/Formular/index.php on line 409
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)