[3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

[3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von jue »

Hallo,

ich habe getestet und getestet. Ich kriege einfach diese Warnung nicht weg:

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/db/driver/driver.php on line 244: Undefined array key "cached"
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/db/driver/driver.php on line 245: Undefined array key "normal"
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/db/driver/driver.php on line 246: Undefined array key "total"
PHP-Version: 8.2.10
Apache/2.4.52 (Ubuntu)
Datenbank-Client Version: libmysql - mysqlnd 8.2.10

Hat da jemand ein Lösung?

Ich habe schon in allen möglichen Foren gesucht, aber zu diesen Zeilen in Datei driver.php finde ich leider nichts.

Für eine Antwort wäre ich wirklich dankbar.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2129
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von LukeWCS »

Hallo
jue hat geschrieben: 09.09.2023 16:21 ich habe getestet und getestet.
Bitte mal ein paar mehr Details, deine Aussage ist genau gar nicht hilfreich. :wink: Was genau hast du getestet? Aus deinem Titel in Kombination mit deiner Aussage "reime" ich mir zusammen, dass du in einem Test Board versuchst ein phpBB 3.3.2 auf 3.3.10 zu bringen. Also wäre mal sinnvoll, das du aufführst, was genau du gemacht hast und wann genau diese Meldung kam.
PHP-Version: 8.2.10
Info am Rande: phpBB ist noch nicht offiziell für PHP 8.2 freigegeben. Ich verwende im lokalen Dev Board zwar schon seit einigen Monaten PHP 8.2, aber in einem Live Board kann ich nur davon abraten eine PHP Version zu fahren, die offiziell noch gar nicht freigegeben ist.

Ebenso gebe ich zu bedenken, dass auch Erweiterungen PHP 8.2 mitmachen müssen. Hast du vor deinem Update alle Exts deaktiviert und bei jeder Ext überprüft, ob diese für 8.2 freigegeben ist?

Siehe auch:
Knowledge Base - Systemanforderungen für phpBB
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von jue »

Hallo, LukeWCS,

vielen Dank für Deine Antwort. Ja, wahrscheinlich bin ich da reingefallen und habe PHP 8.2.10 verwendet, weil ich gar nicht drauf gekommen bin, dass das noch nicht freigegeben ist für phpBB 3.3.10. :(

Ich habe einige Seiten selbst geschrieben und mit dem Forum kombiniert, zu sehen unter:

https://www.jue4you.de

Da sieht man allerdings diesen Fehler nicht. Aber das war auch noch ein 7er PHP. Ich glaube 7.4...

Ich habe eine eigene Klasse abgeleitet von mysqli.php. Wenn diese Funktionen genutzt werden, geschieht der Fehler.

Daher habe ich diese Funktion hier:

Code: Alles auswählen


*
$sql = "SELECT lemi_id, lemi_name, lemi_portion, lemi_stueck";
$sql .= " , lemi_portion_gramm, lemi_stueck_gramm, lemi_user_id";
$sql .= " , lemi_mengenbez, E, F, KH FROM j4u_lemi_lemi WHERE lemi_name != ''";
$sql .= " AND lemi_name LIKE '%" . $search_keyword . "%' ORDER BY lemi_name";
*/

/*
if (!($result = $dblib->sql_query_limit($sql, $per_page, $start))) {
    message_die(GENERAL_ERROR, 'Error getting lemis', '', __LINE__, __FILE__, $sql);
}
*/

//while ($row = $dblib->sql_fetchrow($result)) {
...
    $lemi_id = $row['lemi_id'];
...
}

ersetzt mit dieser Abfrageversion, weil ich dachte, es liegt möglicherweise an sql_fetchrow($result)

Code: Alles auswählen


// Aufruf:

$searched_lemis = array();
$searched_lemis = $dblib->getGesuchteLebensmittel($search_keyword, $per_page, $start);

//Aufgerufene Funktion in j4u_mysqli.php:

    function getGesuchteLebensmittel($search_keyword, $per_page, $start){

        global $cached;

        $cached = $this->sql_num_queries(false);

        $sql = "SELECT lemi_id, lemi_name, lemi_portion, lemi_stueck";
        $sql .= " , lemi_portion_gramm, lemi_stueck_gramm, lemi_user_id";
        $sql .= " , lemi_mengenbez, E, F, KH FROM j4u_lemi_lemi WHERE lemi_name != ''";
        $sql .= " AND lemi_name LIKE '%" . $search_keyword . "%' ORDER BY lemi_name";

        if (!($result = $this->sql_query_limit($sql, $per_page, $start))) {
            message_die(GENERAL_ERROR, 'Error getting lemis', '', __LINE__, __FILE__, $sql);
        }

	$searched_lemis = (array) $this->sql_fetchrowset($result);	// sql_fetchrowset verwendet!
        $this->sql_freeresult($result);

        return $searched_lemis;
    }
    
// Weiterverarbeitung des Ergebnisses auf der Seite:

foreach($searched_lemis as $row){

    ...
    $lemi_id = $row['lemi_id'];
    ...

}    

Aber daran liegt es nicht...

In /phpbb/db/driver.php habe ich Folgendes gefunden:

Zeilen 88 - 97:

Code: Alles auswählen


	/**
	* Constructor
	*/
	function __construct()
	{
		$this->num_queries = array(
			'cached'	=> 0,
			'normal'	=> 0,
			'total'		=> 0,
		);

und Zeilen 231 - 247:

Code: Alles auswählen


	/**
	* {@inheritDoc}
	*/
	function sql_num_queries($cached = false)
	{
		return ($cached) ? $this->num_queries['cached'] : $this->num_queries['normal'];
	}

	/**
	* {@inheritDoc}
	*/
	function sql_add_num_queries($cached = false)
	{
		$this->num_queries['cached'] += ($cached !== false) ? 1 : 0;
		$this->num_queries['normal'] += ($cached !== false) ? 0 : 1;
		$this->num_queries['total'] += 1;
	}

Das sind genau die Zeilen in der driver.php, die den Fehler auslösen!

Dort tauchen die Arrayelemente "cached", "normal" und "total" ja auf. Was muss ich machen, damit dieser Fehler nicht mehr angezeigt wird.

Ist evtl. das PHP-eigene Fehlermanagement extrem streng eingestellt. Warnungen muss man ja auch ausstellen können, aber wo?

Wäre zwar nicht so eine elegante Lösung, würde aber für's Erste helfen...

Gruß, Heiko Jürgens aus Wuppertal
Verschoben von Support-Forum nach Coding & Technik am 11.09.2023 18:37 durch LukeWCS

Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2129
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von LukeWCS »

nAbend

Ist jetzt nach "Coding & Technik" verschoben, denn hier geht es um einen gemoddeten phpBB Core und das gehört nicht mehr zum regulären Support.

Des Weiteren lehne ich persönlich auch jeglichen Support für modifizierte phpBB Installationen ab, weil das ganz schnell ein Fass ohne Boden werden kann. Sobald Mods im Spiel sind, ist alles möglich. Dasselbe gilt zwar generell auch bei Exts, aber die haben Mods gegenüber mehrere gravierende Vorteile. Der wohl wichtigste ist die Eigenschaft, dass man eine Ext bei Verdacht auf Fehlverhalten deaktivieren kann. Das ist bei Mods nicht ohne weiteres möglich. Darum gebe ich dir jetzt noch die Ergebnisse meiner gestrigen Recherche zu deinem Problem und dann bin zumindest ich aus dem Thema hier raus.

Ich habe gestern ein wenig recherchiert, ob ich irgendwas zu deinem Problem finde. Tatsächlich konnte ich nach einigen Anläufen etliche Foren finden, bei denen aktuell genau das gleiche Problem auftritt. Bei 7 davon habe ich mit meinem phpBB Versions Skript eine Stichprobe gemacht und bei 6 davon konnte mein Skript ermitteln, welche phpBB version dort läuft; in allen Fällen 3.0.x. Bei 3 davon konnte mein Skript auch die PHP Version ermitteln; in allen Fällen war ein PHP 8.0.x im Spiel. Das sind alles sehr alten Foren um die sich scheinbar niemand mehr kümmert. Da hat der Hoster offensichtlich zwangsweise auf PHP 8 hochgestuft und das da ein 3.0 nicht mehr mitspielt, dürfte klar sein, denn da ist schon ein PHP 7 zuviel.

Zusammen mit deinen bisherigen Beiträgen gehe ich also jetzt davon aus, dass du vermutlich bei deinen Mods irgendwelche 3.0 Altlasten mitschleifst, die mit dem aktuellen Server Ökosystem - wo dein phpBB läuft - nicht mehr klarkommen.

Am Rande: sind dir die Statistikfehler in deinem Forenindex mal aufgefallen? Die globale Statistik im Footer passt nicht, die Kategorie-Statistiken sind ebenfalls falsch.
jue hat geschrieben: 11.09.2023 15:28 Hallo, LukeWCS,

Ja, wahrscheinlich bin ich da reingefallen und habe PHP 8.2.10 verwendet, weil ich gar nicht drauf gekommen bin, dass das noch nicht freigegeben ist für phpBB 3.3.10. :(
Du hattest das gleiche Problem (falsche PHP Version) schon 2018 auf phpBB.com: https://www.phpbb.com/community/viewtop ... #p15165716

Bitte vor dem Hochstufen der PHP Version immer zuerst erkundigen, ob die installierte phpBB Version UND die Erweiterungen einen solchen Wechsel mitmachen.
Das sind genau die Zeilen in der driver.php, die den Fehler auslösen!
Da wäre mein erster Ansatz zu analysieren, was mit der betreffenden Datenstruktur nach dem Konstruktor passiert. Aber wie gesagt, ich bin raus.
Ist evtl. das PHP-eigene Fehlermanagement extrem streng eingestellt.
Tatsächlich zieht man bei PHP die Zügel immer weiter an. Bereits bei PHP 7 wurden schon erste Neuerungen eingeführt, um strikteren Code zumindest freiwillig notieren zu können. Bei PHP 8 wurde man nochmals strenger und "simple" Fehlerchen die früher höchstens ein E_NOTICE getriggert haben, werden jetzt mit E_WARNING gemeldet. Und was früher noch als E_WARNING durchging, verursacht jetzt direkt einen FATAL, also eine Meldung der Stufe E_ERROR.

Siehe dazu:

https://www.php.net/manual/de/migration ... atible.php

Da werden auch sämtliche Änderungen der verschiedenen Fehlertypen gelistet.
Warnungen muss man ja auch ausstellen können, aber wo?
Nein, nicht ohne den Core zu ändern. Von phpBB werden immer nur E_DEPRECATED und E_NOTICE unterdrückt. Diese kann man per Debug Mode aber auch sichtbar werden lassen. Was man bei phpBB jedoch nicht unterdrücken kann, sind E_WARNING und E_ERROR. Letzteres sind Fehler die untersucht und ggf. behoben werden müssen.

Ganz allgemein kann man festhalten, dass die Luft bei PHP immer dünner wird. Als ich 2018 mit PHP anfing, hat mich ohnehin gewundert, welchen Blödsinn man bei PHP veranstalten kann. Die "Scherze" die man sich bei PHP teilweise erlauben kann, würden andernorts einen regelrechten Fehlermeldungsorkan auslösen. :wink:
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von jue »

Vielen Dank auf jeden Fall zunächst einmal für die umfangreiche Analyse.

Altlasten? Ja, vielleicht jquery-3.2.1.min.js und eine alte Version von jquery-ui.min.js.

Sorry, dass ich 2 X den gleichen Fehler gemacht habe. Aber ich beschäftige mich nur alle paar Jahre mal damit. Das ist, wenn ich das Forum auf einen anderen Rechner migrieren muss. Einerseits ist es sehr schwierig, sein Mods wieder einzubauen und zum Leben zu erwecken, andererseits bietet phpBB eben ein unglaublich gutes "Framework" für eine Webanwendung.

Ich werde demnächst genau nachsehen, welche Version von PHP das aktuelle phpBB erlaubt.

Anscheinend ist es aber auch gar nicht so ein Problem, auf PHP 7.4 downzugraden.

Andererseits läuft ja das Forum ohne jede Probleme mit PHP 8.2.10, soweit ich das bis jetzt sehen kann.

Bezüglich der Fehlertoleranz von PHP gebe ich Dir uneingeschränkt Recht. Beruflich programmiere ich mit C#. Das ist bezüglich Fehlertoleranz natürlich eine andere Welt als PHP. Eine Variable zu verwenden, ohne vorher festzulegen, welcher Datentyp, das kommt da z. B. nicht in Frage...
Ganz allgemein kann man festhalten, dass die Luft bei PHP immer dünner wird. Als ich 2018 mit PHP anfing, hat mich ohnehin gewundert, welchen Blödsinn man bei PHP veranstalten kann. Die "Scherze" die man sich bei PHP teilweise erlauben kann, würden andernorts einen regelrechten Fehlermeldungsorkan auslösen. :wink:
Uneingeschränkte Zustimmung!!!

:)
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10 - Problem GELÖST

Beitrag von jue »

Hallo nochmal:

Da ich das Problem lösen konnte, möchte ich es hier kurz darstellen:

Im Constructor der driver.php steht das hier:

Code: Alles auswählen

	/**
	* Constructor
	*/
	function __construct()
	{
		$this->num_queries = array(
			'cached'	=> 0,
			'normal'	=> 0,
			'total'		=> 0,
		);
Der Code in der driver.php, der die Warnungen auslöste, war das hier:

Code: Alles auswählen

	/**
	* {@inheritDoc}
	*/
	function sql_num_queries($cached = false)
	{
		return ($cached) ? $this->num_queries['cached'] : $this->num_queries['normal'];
	}

	/**
	* {@inheritDoc}
	*/
	function sql_add_num_queries($cached = false)
	{
		$this->num_queries['cached'] += ($cached != false) ? 1 : 0;
		$this->num_queries['normal'] += ($cached != false) ? 0 : 1;
		$this->num_queries['total'] += 1;
	}
In meiner eigenen von mysqli.php abgeleiteten Klasse j4u_mysqli.php habe ich die Funktion sql_query_limit (...) genutzt:

Code: Alles auswählen

    function getGesuchteLebensmittel($search_keyword, $per_page, $start){

        $sql = "SELECT lemi_id, lemi_name, lemi_portion, lemi_stueck";
        $sql .= " , lemi_portion_gramm, lemi_stueck_gramm, lemi_user_id";
        $sql .= " , lemi_mengenbez, E, F, KH FROM j4u_lemi_lemi WHERE lemi_name != ''";
        $sql .= " AND lemi_name LIKE '%" . $search_keyword . "%' ORDER BY lemi_name";

		if (!($result = $this->sql_query_limit($sql, $per_page, $start))) {
            message_die(GENERAL_ERROR, 'Error getting lemis', '', __LINE__, __FILE__, $sql);
        }
	
	    $searched_lemis = (array) $this->sql_fetchrowset($result);
        $this->sql_freeresult($result);
		
		return $searched_lemis;
    }
Es reichte dann, die Definition des Arrays 'num_queries' im Constructor von driver.php in den Constructor meiner abgeleiteten Klasse zu kopieren:

Code: Alles auswählen

namespace phpbb\db\driver;

/**
 * Description of j4u_mysqli
 *
 * @author juergens
 */
class j4u_mysqli extends \phpbb\db\driver\mysqli {
// Meine DB-Zugriffsfunktionen:	frueher: dblib.inc
// 
// Weiter unten sind Sessionfunktionen zu finden, früher: session.inc
// 
// Standarddatenbankabfrage, welche passende Datensätze aus der entpr. Tabelle heraussucht

    /**
     * @name dblib mysqli var
     * @author Heiko Juergens <jue@live.de>
     */
    function __construct() {
		
		$this->num_queries = array(		// Das hier war die Lösung
			'cached'	=> 0,			// Das hier war die Lösung
			'normal'	=> 0,			// Das hier war die Lösung
			'total'		=> 0,		// Das hier war die Lösung
		);							// Das hier war die Lösung
		
        $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
        $phpEx = substr(strrchr(__FILE__, '.'), 1);

Letzten Endes bin ich drauf gekommen durch den Satz von LukeWCS:
Da wäre mein erster Ansatz zu analysieren, was mit der betreffenden Datenstruktur nach dem Konstruktor passiert.
Nochmals einen herzlichen Dank an LukeWCS !!!

:grin: :grin: :grin:
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2129
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von LukeWCS »

Danke für die Rückmeldung.

Ich erinnere nochmal daran, dass du die Voraussetzungen im Blick behalten musst. Du benutzt ein phpBB 3.3.2 mit PHP 8.2, was da aber noch nicht freigegeben war. Du dürfest bei phpBB 3.3.2 "eigentlich" nicht mal PHP 8.0 fahren.

Ab 3.3.1 wurde phpBB bei mehreren Versionen für PHP 8 angepasst, zuletzt bei 3.3.10. Deinem Forum fehlen somit die meisten PHP 8 Anpassungen. Den Link zur Infoseite bezüglich Voraussetzungen habe ich dir ja bereits gegeben.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von jue »

Hallo,

wie kann man das Thema schließen oder als gelöst kennzeichnen? Oder macht Ihr das?

LG, jue
Benutzeravatar
Scanialady
Supporter
Supporter
Beiträge: 1735
Registriert: 23.02.2009 16:29
Wohnort: Velbert (NRW)
Kontaktdaten:

Re: [3.3] [3.3.10] Migration von phpBB 3.3.2 auf phpBB 3.3.10

Beitrag von Scanialady »

Themen werden nur in besonderen Fällen geschlossen.
Danke für die Rückmeldung, dass das Problem für dich gelöst ist. Bei weiteren Fragen eröffne bitte ein dazu passendes neues Thema im entsprechenden Bereich.
Die Bosheit trinkt die Hälfte ihres eigenen Giftes (Lucius Annaeus Seneca)
-
Wenn von etwas kein Backup existiert, dann ist es nicht wichtig.
Antworten

Zurück zu „Coding & Technik“