Seite 1 von 1

Fehlermeldungen PHP Warning: count():

Verfasst: Do 3. Dez 2020, 15:44
von lunsen_de
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

Re: Fehlermeldungen PHP Warning: count():

Verfasst: Do 3. Dez 2020, 17:34
von Faar
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

Re: Fehlermeldungen PHP Warning: count():

Verfasst: Do 3. Dez 2020, 21:10
von xmurrix
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