Seite 1 von 2

PHP-Warnung in "Checking group membership"

Verfasst: 18.02.2018 19:40
von eumelchen
Hallo zusammen,

heute hatte ich zufällig mal in de Error-Logs auf dem Server angesehen und da folgende Meldung gefunden:
[Sun Feb 18 17:37:53 2018] [-:error] [pid 31328] [client 100.76.138.100] [host http://www.forum.de] PHP Warning: Invalid argument supplied for foreach() in /is/htdocs/wp67211_MOYUN7QYCB/www/forum/ext/kirk/checking_group_membership/event/listener.php on line 97
Ich habe zwar noch keine Auswirkung fesrgestellt, es wäre aber sicher besser diesen Fehler zu korrigieren.

Mein Forum läuft unter PHP 7 und da wird scheinbar "foreach" nicht mehr unterstützt.
Kann mir jemand sagen was man da ändern muss?

Gruß
Rolf (eumelchen)

Re: PHP-Warnung in "Checking group membership"

Verfasst: 18.02.2018 21:33
von Mahony
Hallo
eumelchen hat geschrieben:Mein Forum läuft unter PHP 7 und da wird scheinbar "foreach" nicht mehr unterstützt.
Hehe :D wie kommst Du denn auf DAS schmale Brett? Das wäre ja eine Katastrophe, wenn dem so wäre.

Die Fehlermeldung besagt, dass der Benutzer keiner Gruppe angehört.

Was ergibt denn diese Abfrage?

Code: Alles auswählen

SELECT phpbb_users.* FROM phpbb_users LEFT JOIN phpbb_user_group ON phpbb_users.user_id = phpbb_user_group.user_id WHERE phpbb_user_group.user_id IS NULL 
Wenn als Ergebnis der Gast-Benutzer (Anonymous mit der user_id = 1) herauskommt, dann musst du den Benutzer (Anonymous ) der Gast-Gruppe hinzufügen.

Grüße: Mahony

Re: PHP-Warnung in "Checking group membership"

Verfasst: 18.02.2018 21:45
von eumelchen
Hallo Mahony,
die Abfrage ergibt das hier:
MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze). ( Die Abfrage dauerte 0.0169 Sekunden )
SELECT phpbb_users . *
FROM phpbb_users
LEFT JOIN phpbb_user_group ON phpbb_users.user_id = phpbb_user_group.user_id
WHERE phpbb_user_group.user_id IS NULL
LIMIT 0 , 30

Re: PHP-Warnung in "Checking group membership"

Verfasst: 18.02.2018 22:34
von Mahony
Hallo
Wie auch immer...diese Fehlermeldung
Warning: Invalid argument supplied for foreach()
bedeutet, das foreach ein Array mit Inhalten erwartet, aber nicht bekommt.

Suche also in der kirk/checking_group_membership/event/listener.php

Code: Alles auswählen

global $grouprec;
		if ( !function_exists('group_memberships') )
	{
		include($this->root_path . 'includes/functions_user.'.$this->phpEx);
	}
		$groups = group_memberships(false,$this->user->data['user_id']);
		foreach ($groups as $grouprec)
	{
			$this->template->assign_vars(array(
			 'S_GROUP_' . $grouprec['group_id'] => true
		));
	}
}
}
Ersetze mit

Code: Alles auswählen

global $grouprec;
		if ( !function_exists('group_memberships') )
	{
		include($this->root_path . 'includes/functions_user.'.$this->phpEx);
	}
		$groups = group_memberships(false,$this->user->data['user_id']);
		if(is_array($groups))
		{
		foreach ($groups as $grouprec)
	{
			$this->template->assign_vars(array(
			 'S_GROUP_' . $grouprec['group_id'] => true
		));
	}
       }
}
}
Damit wird sicher gestellt, dass es auch ein Array mit Inhalt gibt (das man dann abfragen kann).

Grüße: Mahony

Re: PHP-Warnung in "Checking group membership"

Verfasst: 19.02.2018 08:36
von eumelchen
Hallo Mahony,

das habe ich jetzt mal gemacht, jetzt habe ich folgenden Eintrag im Error Logfile:
[Mon Feb 19 08:28:44 2018] [-:error] [pid 13586] [client 54.36.148.91] [host forum.de] PHP Fatal error: require(): Failed opening required './ext/kirk/checking_group_membership/event/listener.php' (include_path='.:/usr/share/php7.0') in /is/htdocs/wp67211_MOYUN7QYCB/www/forum/phpbb/class_loader.php on line 160
LG Rolf (eumelchen)

Re: PHP-Warnung in "Checking group membership"

Verfasst: 19.02.2018 08:57
von Mahony
Hallo
Bitte prüfe ob die Datei /ext/kirk/checking_group_membership/event/listener.php tatsächlich vorhanden ist und mindestens die Rechte 644 hat.

Grüße: Mahony

Re: PHP-Warnung in "Checking group membership"

Verfasst: 19.02.2018 09:05
von eumelchen
Die Datei
Mahony hat geschrieben:/ext/kirk/checking_group_membership/event/listener.php
ist vorhanden und hat die Rechte 755.
Ich hatte die Datei per FTP vom Server runtergeladen, geändert und dann wieder hochgeladen.

So wie es aussieht funktioniert die Extension aber, ich habe ein paar Sachen im Forum die nur für bestimmte Gruppen zugänglich sind und das habe ich als Teilnehmer verschiedener Gruppen getestet.

Re: PHP-Warnung in "Checking group membership"

Verfasst: 20.02.2018 09:20
von eumelchen
Vorsichtshalber hatte ich wieder den ursprünglichen Zustand der Datei listener.php hergestellt, heute Morgen waren dann so ca. 40 - 50 gleiche Fehlermeldungen, nur mit unterschiedlichen Uhrzeiten:
[Tue Feb 20 04:44:27 2018] [-:error] [pid 7047] [client 5.9.79.151] [host http://www.myforum.de] PHP Warning: Invalid argument supplied for foreach() in /is/htdocs/wp67211_MOYUN7QYCB/www/forum/ext/kirk/checking_group_membership/event/listener.php on line 97
Keiner einer Idee für eine Lösung?

LG Rolf (eumelchen)

Re: PHP-Warnung in "Checking group membership"

Verfasst: 20.02.2018 09:33
von Mahony
Hallo
eumelchen hat geschrieben:Keiner einer Idee für eine Lösung?
Die Lösung zur Abfrage, ob es ein Array gibt ist schon die richtige.

Die vormals von Dir genannte Fehlermeldung
[Mon Feb 19 08:28:44 2018] [-:error] [pid 13586] [client 54.36.148.91] [host forum.de] PHP Fatal error: require(): Failed opening required './ext/kirk/checking_group_membership/event/listener.php' (include_path='.:/usr/share/php7.0') in /is/htdocs/wp67211_MOYUN7QYCB/www/forum/phpbb/class_loader.php on line 160
kann keinesfalls durch die Änderung an der Datei zustande gekommen sein.

Diese Fehlermeldung besagt nämlich, dass die Datei nicht geöffnet werden kann (weil sie entweder nicht existiert, oder nicht gefunden wird, oder die Rechte nicht stimmen). Das bedeutet wiederum, dass der Fehler unabhängig von der Änderung an der Datei auftritt.

Ich würde mal folgendes versuchen:
1. Die Extension deaktivieren
2. Die Arbeitsdaten löschen
3. Den cache leeren
4. Das Paket mit der geänderten Datei hochladen und die Extension erneut aktivieren.

Grüße: Mahony

Re: PHP-Warnung in "Checking group membership"

Verfasst: 20.02.2018 10:55
von vfrblue
Braucht man denn unter phpBB 3.2.x noch diese Ext.? Man kann doch über S_GROUP_x die Gruppenzugehörigkeit zuordnen. Oder liege ich da falsch?