Hallo larslunsen,
es kann sein, dass eine gewisse Konstellation, PHP-/Server-Einstellungen oder Bot-Anfragen, diese Logeinträge verursachen. Da der von dir beschriebene Fall nicht sehr oft vorkommt, bei mir ist das nie geschehen und mir ist auch nicht bekannt, dass andere Benutzer das Problem hatten, muss man davon ausgehen, dass es sich um einen speziellen Einzelfall handelt, auch wenn der Code Original ist und du nichts daran geändert hast.
Überprüfe z. B. die Server-Logs, ob zu gleichen Zeiten, in denen die Fehlermeldungen in der errorlog.txt auftauchen, auch irgendwelche HTTP-Anfragen gezielt auf Seiten gingen, in denen Formulare vorkommen. Viele Bots versuchen nämlich über Formulare das System anzugreifen oder Spam zu verschicken.
Du kannst aber auch in der Datei "class.pifa.abstract_form_module.php" die eine Zeile auskommentieren, damit sie keinen Fehler wirft und dadurch die errorlog.txt nicht zugemüllt wird. Ich würde das aber nicht machen. Wenn die errorlog.txt mit diesen Meldungen voll ist, kann das ein Hinweis darauf sein, dass diese Formularseiten sehr oft Angefragt werden, vermutlich ein Hinweis auf Spam-/Angriffs-Versuche...
Zur Kommandozeile:
Wenn man ein Skript in der Kommandozeile ausführt, läuft es nicht im Kontext des Web-Servers (Apache, nginx). Dann gibt es keine HTTP Anfragen und somit auch keine HTTP-Methode. Sollte das CONTENIDO Frontend also über die Kommandozeile ausgeführt werden, mit der ID des Artikels, in der das Formular vorkommt, dann kann das Formular die HTTP-Methode nicht ermitteln und wirft somit einen Fehler.
Zur Ausgabepufferung:
Ist in PHP die Ausgabepufferung aktiv, z. B. mit der PHP-Funktion ob_start(), und es werden HTTP HEAD Anfragen gesendet, wird die Ausführung des Skriptes nicht beendet. Dann kann es sein, dass der Code des Artikels, in der das Formular vorkommt, ausgeführt wird und das Formular einen Fehler wirft, weil es eine GET- oder POST-Anfrage erwartet.
Eine mögliche Lösung:
Du kannst das recht einfach lösen, indem du im Modulcode (Modulausgabe) eine Überprüfung wie folgt einbaust:
Code: Alles auswählen
<?php
if (isset($_SERVER) && !empty($_SERVER['REQUEST_METHOD']) && in_array($_SERVER['REQUEST_METHOD'], ['GET', 'POST'])) {
// Modulcode hier...
}
?>
Dann wird der Code des Formulars ausgeführt, wenn es sich nur um eine GET- oder POST-Anfrage handelt und es tauchen keine Einträge in der errorlog.txt. Die Ursache des Problems ist damit aber nicht gelöst.
Gruß
xmurrix