Seite 1 von 2

Kleine Fehler nach erweitertem Debug

Verfasst: 16.03.2012 19:05
von Malte
Hallo,

ich habe den MOD Debug Errors and Notices installiert, der mir Fehler in meinem Forum genauer anzeigt.

Aktuell habe ich seltsamerweise aber folgende Fehleranzahl:
Fehler: 16 Protokolleinträge
Einfache Fehler: 3358 Protokolleinträge
Das sind fast immer die gleichen Fehler, aber ich weiß nicht ganz genau, wie ich sie beheben soll. :(

Ich bin nicht unbedingt der Experte für php-Codes. :P

Ich stelle euch mal erstmal die 3 häufigsten Fehler vor und hoffe, dass ihr mir beim beheben ein wenig behilflich sein könnt. Dass ich erstmal nur 3 angebe ist aus Übersichtlichkeitsgründen, wenn ihr mir bei den 3 helfen konntet, dann werde ich noch ein paar weitere folgen lassen. :P

1. Die 16 Protokolleinträge im ersten Fehlerprotokoll hatten waren alle die selben:
IP-Adressen-/Browser-/X_FORWARDED_FOR-Überprüfung gescheitert
»Benutzer-IP „[zensiert]“ geprüft gegen Sitzungs-IP „[zensiert]“, Benutzer-Browser „mozilla/5.0 (windows nt 6.1; wow64) applewebkit/535.11 (khtml, like gecko) chrome/17.0.963.79 safari/535.11“ gegen Sitzungs-Browser „mozilla/5.0 (windows nt 6.1; wow64) applewebkit/535.11 (khtml, like gecko) chrome/17.0.963.79 safari/535.11“ und X_FORWARDED_FOR-Angabe des Benutzers „“ gegen X_FORWARDED_FOR-Angabe der Sitzung „“.
Die beiden IP-Adressen habe ich zensiert, aber es waren auf jeden Fall, 2 verschiedene IP-Adressen.

2.
Seite: index.php
Datei: [ROOT]/includes/automatic_dst.php
Zeile: 31 [PHP Notice]

Undefined index: 1
Die Datei automatic_dst.php habe ich mal in den Pastebin getan:
https://www.phpbb.de/support/pastebin.p ... iew&s=1001

3.
Seite: -
Datei: [ROOT]/includes/functions_posting.php
Zeile: 988 [PHP Notice]

Undefined variable: sql
Die Datei functions_posting.php habe ich mal in den Pastebin getan:
https://www.phpbb.de/support/pastebin.p ... iew&s=1002

Ich hoffe ihr könnt mir bei meinen 3 Fehlermeldungen ein wenig behilflich sein, ich vertraue auf eure Hilfe.

Viele Grüße
Malte

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 17.03.2012 16:46
von Malte
Malte hat geschrieben:Hallo,

ich habe den MOD Debug Errors and Notices installiert, der mir Fehler in meinem Forum genauer anzeigt.

Aktuell habe ich seltsamerweise aber folgende Fehleranzahl:
Fehler: 16 Protokolleinträge
Einfache Fehler: 3358 Protokolleinträge
Das sind fast immer die gleichen Fehler, aber ich weiß nicht ganz genau, wie ich sie beheben soll. :(

Ich bin nicht unbedingt der Experte für php-Codes. :P

Ich stelle euch mal erstmal die 3 häufigsten Fehler vor und hoffe, dass ihr mir beim beheben ein wenig behilflich sein könnt. Dass ich erstmal nur 3 angebe ist aus Übersichtlichkeitsgründen, wenn ihr mir bei den 3 helfen konntet, dann werde ich noch ein paar weitere folgen lassen. :P

1. Die 16 Protokolleinträge im ersten Fehlerprotokoll hatten waren alle die selben:
IP-Adressen-/Browser-/X_FORWARDED_FOR-Überprüfung gescheitert
»Benutzer-IP „[zensiert]“ geprüft gegen Sitzungs-IP „[zensiert]“, Benutzer-Browser „mozilla/5.0 (windows nt 6.1; wow64) applewebkit/535.11 (khtml, like gecko) chrome/17.0.963.79 safari/535.11“ gegen Sitzungs-Browser „mozilla/5.0 (windows nt 6.1; wow64) applewebkit/535.11 (khtml, like gecko) chrome/17.0.963.79 safari/535.11“ und X_FORWARDED_FOR-Angabe des Benutzers „“ gegen X_FORWARDED_FOR-Angabe der Sitzung „“.
Die beiden IP-Adressen habe ich zensiert, aber es waren auf jeden Fall, 2 verschiedene IP-Adressen.

2.
Seite: index.php
Datei: [ROOT]/includes/automatic_dst.php
Zeile: 31 [PHP Notice]

Undefined index: 1
Die Datei automatic_dst.php habe ich mal in den Pastebin getan:
https://www.phpbb.de/support/pastebin.p ... iew&s=1001

3.
Seite: -
Datei: [ROOT]/includes/functions_posting.php
Zeile: 988 [PHP Notice]

Undefined variable: sql
Die Datei functions_posting.php habe ich mal in den Pastebin getan:
https://www.phpbb.de/support/pastebin.p ... iew&s=1002

Ich hoffe ihr könnt mir bei meinen 3 Fehlermeldungen ein wenig behilflich sein, ich vertraue auf eure Hilfe.

Viele Grüße
Malte

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 17.03.2012 23:55
von Miri pt2
zu 3.:
Die variable $sql ist in der Zeile 988 Deiner php Datei noch garnicht bekannt, daher gibt es Stress mit der Funktion str_replace()
Finde in der Zeile 980 ff. der Datei /includes/functions_posting.php:

Code: Alles auswählen

/**
* Topic Review
*/
//-- mod: Prime Trash Bin (Posts) -------------------------------------------//
// When doing topic review, get only posts that aren't mock-deleted.
    include ($phpbb_root_path . 'includes/prime_trash_bin_a.' . $phpEx);
    if (stifle_topics_enabled())
    {
        $sql = str_replace('AND u.user_id = p.poster_id', 'AND u.user_id = p.poster_id AND p.post_deleted_time = 0', $sql);
    }
//-- end: Prime Trash Bin (Posts) -------------------------------------------//   
Und lösche es dort. Diese Code dort steht dort komplett falsch.

zu 2.:
finde in der automatic_dst.php:

Code: Alles auswählen

    // Time zone not yet converted, so lets temporarily do just that -  if there's no entry to convert to reset to board time   
danach füge ein:

Code: Alles auswählen

    var_dump($user->data['user_timezone']); 
und poste den neuen Output hier im Thema.

zu 1.: k.A.

zu 0.: Mit dieser Art von Bumping machst Du Dir hier keine Freunde. //das war OT

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 00:30
von Malte
Zur 3.:
Soll ich den gesamten Code, den du mir vorgegeben hast löschen? Das Zeuchs mit den Trash Bin gehört zu einer ganz eigenartigen Änderung in der Datei nach der install.xml von dem MOD:

Code: Alles auswählen

<edit>
				<comment lang="en">The first FIND is just to get your cursor into position so the next FIND will locate the correct line.</comment>

				<find><![CDATA[function topic_review(]]></find>
				<find><![CDATA[	$result = $db->sql_query($sql);]]></find>
				<action type="before-add"><![CDATA[//-- mod: Prime Trash Bin (Posts) -------------------------------------------//
// When doing topic review, get only posts that aren't mock-deleted.
	include ($phpbb_root_path . 'includes/prime_trash_bin_a.' . $phpEx);
	if (stifle_topics_enabled())
	{
		$sql = str_replace('AND u.user_id = p.poster_id', 'AND u.user_id = p.poster_id AND p.post_deleted_time = 0', $sql);
	}
//-- end: Prime Trash Bin (Posts) -------------------------------------------//
]]></action>
			</edit>
Zu 2.:
Also nach der Änderung zeigt der erstmal nichts an, ich sage mal, was demnächst passiert.

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 10:31
von Malte
So zu 3.: So weit ich das nun nochmal kontrolliert habe, hat der angegebene Vorgang, den Sinn, dass man schlecht nach $result = $db->sql_query($sql); suchen kann, weil das ganz oft vorkommt und dann lieber erst nach dem anderen Sucht, um das das "nächstgelegene" $result = $db->sql_query($sql); zu erreichen. Also habe ich den Text einfach an der falschen Stelle eingefügt, gelle? Also ich habe das mal geändert und dann kamen keine weiteren Fehler mehr vor.

Zu 2.: Also, ich erkenne überhaupt keine Meldungen, die nach dieser Änderung sonderlich angezeigt werden, Tatsache ist nur, dass der Fehler bestehen bleibt, nur dass es jetzt, weil wir die eine Zeile da eingefügt haben, nicht mehr Zeile 31 sondern Zeile 32 ist.

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 10:58
von Miri pt2
zu 2.: Irgendwann wird doch die automatic_dst.php aufgerufen... Dann sollte etwas mehr zur Anzeige kommen.
Das Problem ist, dass die User-Daten für die Zeitzone nicht mit den Indizes des $timetable zusammen passen.
$user->data['user_timezone'] sollte ein String sein, der so z.B. aussieht '1.00'. Aber es wird 1 zurückgegeben. Diese könnte bspw. durch eine Variablenanpassung des php Interpreters erfolgen, weil der nicht genau weiss, was er mit den Daten machen soll; aus welchen Grund auch immer.

Dein $timetable ist so aufgebaut:

Code: Alles auswählen

array('1.00' => 'Europe/Berlin'); 
...und 1 ist nunmal <> '1.00',
Seite: index.php
Datei: [ROOT]/includes/automatic_dst.php
Zeile: 31 [PHP Notice]

Undefined index: 1 <<---- das sollte '1.00' sein
so kann nichts bei der Suche nach den Indizes gefunden werden.

Ich erwarte also eine Ausgabe, die so aussehen könnte: string(6) "-10.00".
Wenn Du diese Daten hast, können wir weitermachen. (Mußt sie natürlich auch posten. :lol: )

Zum anderen Problem des Codefindens: Dein Code, den ich als "dort falsch"deklariert habe, stand an einer mehr als sinnfreien Stelle:

Code: Alles auswählen

} // <<---- Hier ist das Ende der vorherigen Funktion

/**
* Topic Review
*/
//-- mod: Prime Trash Bin (Posts) -------------------------------------------//
// When doing topic review, get only posts that aren't mock-deleted.
    include ($phpbb_root_path . 'includes/prime_trash_bin_a.' . $phpEx);
    if (stifle_topics_enabled())
    {
        $sql = str_replace('AND u.user_id = p.poster_id', 'AND u.user_id = p.poster_id AND p.post_deleted_time = 0', $sql);
    }
//-- end: Prime Trash Bin (Posts) -------------------------------------------//
function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id = 0, $show_quote_button = true) // <<---- Und hier beginnt die neue Funktion.     
Da stand noch nie $result = $db->sql_query($sql);; weder jetzt, noch damals als Du den Code eingefügt hast.... Das nur am Rande. 8)

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 11:12
von Malte
Zu 2.:
Also irgend etwas neu ausgegeben wir da nichts, die neueste Meldung ist zum Beispiel:

Code: Alles auswählen

Seite: index.php
Datei: [ROOT]/includes/automatic_dst.php
Zeile: 32	[PHP Notice]

Undefined index: 1
Das ist die gleiche Meldung wie sonst, da steht nichts weiter dabei.

Zu 3.:

Wäre es denn nun korrekt:
https://www.phpbb.de/support/pastebin.p ... iew&s=1009

Meiner Meinung nach ist das nun so. :mrgreen:

Gruß
Malte

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 12:32
von Miri pt2
Miri pt2 hat geschrieben:zu 3.:
Die variable $sql ist in der Zeile 988 Deiner php Datei noch garnicht bekannt, daher gibt es Stress mit der Funktion str_replace()
Finde in der Zeile 980 ff. der Datei /includes/functions_posting.php:

Code: Alles auswählen

/**
* Topic Review
*/
//-- mod: Prime Trash Bin (Posts) -------------------------------------------//
// When doing topic review, get only posts that aren't mock-deleted.
    include ($phpbb_root_path . 'includes/prime_trash_bin_a.' . $phpEx);
    if (stifle_topics_enabled())
    {
        $sql = str_replace('AND u.user_id = p.poster_id', 'AND u.user_id = p.poster_id AND p.post_deleted_time = 0', $sql);
    }
//-- end: Prime Trash Bin (Posts) -------------------------------------------//    
Und lösche es dort. Diese Code dort steht dort komplett falsch.
Ich habe die Kardinal-Begriffe etwas hervorgehoben. Du hast aber den Code an beiden Stellen gelöscht; der kam zweimal vor.

Zum Anderen Problem: Daß sich diese fehlermeldung in den Logs nicht ändert, ist natürlich... Ich möchte den Output auf einer Deiner phpBB Scriptseiten sehen; also nicht im LOG deiner Mod, sondern direkt auf der Webseite.

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 15:19
von Malte
Ich habe das doch gelöscht? Außer dem kleinen Kommentar mit dem Topic Review habe ich die gesamte Stelle gelöscht, aber es ist ja nur ein Kommentar. :P

Re: Kleine Fehler nach erweitertem Debug

Verfasst: 18.03.2012 17:25
von Miriam
Dann habe ich das übersehen.... :oops:

Zum Thema #2:
Hast Du mal anstatt dieses Codes in der /includes/automatic_dst.php (ab Zeile 30)

Code: Alles auswählen

                $timetable = automatic_dst_get_timetable();
                $user->data['user_timezone'] = ($timetable[$user->data['user_timezone']]) ? $timetable[$user->data['user_timezone']] : $user->lang['tz_zones'][$user->data['user_timezone']] 
diesen hier probiert?

Code: Alles auswählen

                $user->data['user_timezone'] = (float)$user->data['user_timezone'];
                $timetable = $user->lang[$lang]['datetime']['tz_zones'];
                $user->data['user_timezone'] = ($user->lang['tz_zones'][$user->data['user_timezone']]) ? $user->lang['tz_zones'][$user->data['user_timezone']] : $user->lang['tz_zones'][$user->data['user_timezone']];