Fehlermeldungen PHP Warning: count():

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Fehlermeldungen PHP Warning: count():

Beitrag von lunsen_de » Do 3. Dez 2020, 15:44

Hallo, kann mir jemand sagen, was folgende Fehlermeldungen in der Errorlog zu sagen haben (System 4.10.1 mit PHP 7.3):

Code: Alles auswählen

[03-Dec-2020 12:34:58 UTC] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in ........./contenido/plugins/newsletter/includes/include.recipients.group_edit.php on line 119
[03-Dec-2020 12:35:09 UTC] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in ........./contenido/plugins/newsletter/includes/include.recipients.group_edit.php on line 86

oder

[03-Dec-2020 13:43:28 UTC] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in ........./contenido/plugins/newsletter/includes/include.recipients_edit.php on line 128
[03-Dec-2020 13:43:42 UTC] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in ........./contenido/plugins/newsletter/includes/include.recipients.group_edit.php on line 119
Gruß larslunsen

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Fehlermeldungen PHP Warning: count():

Beitrag von Faar » Do 3. Dez 2020, 17:34

Das passiert zum Beispiel, wenn statt einem Array einer Variablen ein einzelner Wert zugeschrieben wird. $array = 6;
Oder wenn eine Objekt keinen zählbaren Inhalt eingebaut hat.
PHP 7.3 meckert nun einfach gegenüber früher. Die Fehler waren vorher schon da.

https://www.php.net/manual/de/function.count.php
Man kann es updaten oder nötdürftig "reparieren", wenn man vorher is_countable() als Abfrage ins Programm einbaut.
https://www.php.net/manual/de/function.is-countable.php

Natürlich wäre es besser, wenn ein Array auch ein Array bleibt und eine Klasse auch etwas zählbares enthält.
https://www.php.net/manual/de/class.countable.php
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Fehlermeldungen PHP Warning: count():

Beitrag von xmurrix » Do 3. Dez 2020, 21:10

Hallo lunsen_de,

die Ursache für die Einträge in der errorlog.txt ist auf nicht richtig initialisierte Variablen zurückzuführen. Zum Beispiel in der Datei include.recipients.group_edit.php in Zeile 119 kann es sein, dass die Variable $aMessages überhaupt gar nicht gesetzt ist, erst recht nicht eine Liste ist. Daher erzeugt die Verwendung von count($aMessages) eine Warnung.

Im aktuellen Entwicklungsstand von CONTENIDO wurden einige dieser Probleme behoben, aber in CONTENIDO 4.10.1 und in den Modulen wirst du an einigen Stellen diese Art von Meldungen bekommen. Das ist zwar nicht problematisch aber ärgerlich, wenn die errorlog.txt mit solchen Meldungen zugemüllt wird.

Wenn dich das stört oder die Menge der Einträge in der errorlog.txt zu viel werden, ist meine Empfehlung an dich folgende:

Falls nicht vorhanden, erstelle eine Datei "data/config/{umgebung}/config.local.php" und schreibe folgendes rein:

Code: Alles auswählen

<?php

global $cfg;

$cfg['php_error_reporting'] = E_ALL & ~(E_STRICT | E_NOTICE | E_WARNING);
Das sorgt dafür, dass auch Warnungen unterdrückt werden.


Übrigens, danke für den Post, ich erstelle gleich ein Ticket dafür, damit das behoben wird.

Nachtrag:
Das Ticket dazu ist erstellt.

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.

Antworten