Seite 4 von 5

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 11.05.2012 12:50
von GoTo
Ich habe den Quickfix mal ausprobiert, obwohl bei mir in der Adresszeile des Browsers viewtopic.php?... steht und es taucht dann wenigstens kein Codefehler mehr auf, sondern die Seite konnte nicht gefunden werden. ;) Hab den Code aber direkt wieder ausgebaut. :)

Hier die viewtopic.php. Danke für deine Hilfe!

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 11.05.2012 12:53
von BNa
GoTo hat geschrieben:Ich habe den Quickfix mal ausprobiert, obwohl bei mir in der Adresszeile des Browsers viewtopic.php?... steht und es taucht dann wenigstens kein Codefehler mehr auf, sondern die Seite konnte nicht gefunden werden. ;)
So soll es sein, wenn ein Thema nicht mehr existiert, oder?
GoTo hat geschrieben:Hab den Code aber direkt wieder ausgebaut. :)
Nicht nötig, da der Code getestet ist und genau diesen Fehler abfängt.

viewtopic.php?f=74&t=201686&start=20#p1271610
BNa hat geschrieben:Hier ein Quickfix (getestet)

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 11.05.2012 13:03
von BNa
Hm, ein paar 'Ungereimtheiten' in der Datei aber nichts spezifisches. Also, entferne den Fix mal temporär und füge eine frische viewtopic.php aus dem 3.0.10 Downloadpaket in Dein Forum ein ("Alte" viewtopic.php vorher sichern) - Leere alle Caches, teste mal und berichte.

----------------------------------------

Nur nochmal am Rande
BNa hat geschrieben:
GoTo hat geschrieben:Hab den Code aber direkt wieder ausgebaut. :)
Nicht nötig, da der Code getestet ist und genau diesen Fehler abfängt.

viewtopic.php?f=74&t=201686&start=20#p1271610
Du kannst den auftretenden Fehler provozieren um den Code zu testen.

Finde

Code: Alles auswählen

return strtr(@gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset), $date_cache[$format]['lang']);  
Ersetze mit

Code: Alles auswählen

// Hier löschen wir das Array testweise und machen es noch dazu leer
$date_cache[$format]['lang'] = '';

return strtr(@gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset), $date_cache[$format]['lang']);  
Ergebnis

Code: Alles auswählen

Warning: strtr() [function.strtr]: The second argument is not an array in /home/xxx/public_html/includes/session.php on line **** 
Nehmen wir nun den Fix und provozieren den gleichen, selten vorkommenden Fehler,
das das $date_cache[$format]['lang'] Array nicht vorhanden oder leer ist

Code: Alles auswählen

// Hier löschen wir das Array testweise und machen es noch dazu leer
$date_cache[$format]['lang'] = '';

if (is_array($date_cache[$format]['lang']) && (!empty($date_cache[$format]['lang'])))
{
return strtr(@gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset), $date_cache[$format]['lang']);
} 
else
{
return @gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset);
}  
kommen wir zu dem Ergebnis, das alles schön ist.

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 11.05.2012 18:32
von GoTo
Hey! Es kommt keine Seite von phpbb mit "Das Thema existiert nicht", sondern eine Browser Fehlerseite erscheint. Das soll so nicht.

Ich probiere das mit der frischen viewtopic.php. Sobald ich da Ergebnisse habe, melde ich mich hier wieder.

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 11.05.2012 19:10
von BNa
GoTo hat geschrieben:Hey! Es kommt keine Seite von phpbb mit "Das Thema existiert nicht", sondern eine Browser Fehlerseite erscheint. Das soll so nicht.
Welchen Inhalt hat die 'Browser Fehlerseite'? In welchem Zusammenhang kommt diese? Deine Informationen sind etwas dürftig und wie ich schon sagte: Der Code hier ist getestet, daher sind mit diesem Code keine weiteren Fehlermeldungen möglich.

Ausserdem sollte dieser Code hier

Code: Alles auswählen

// Hier löschen wir das Array testweise und machen es noch dazu leer
$date_cache[$format]['lang'] = ''; 
aus meinem letzten Post nur zum testen sein, um zu zeigen, das der Code den Fehler zuverlässig auffängt.

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 14.05.2012 09:53
von GoTo
Ich erhalte eine 404 Fehlerseite, anstatt einer von phpbb generierten mit Style versehen Seite mit der Aussage, dass das Thema nicht existiert.

Eine frische viewtopic.php hat leider auch nichts gebracht. Die gleichen Fehler erschienen erneut. Hmm...

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 14.05.2012 10:28
von BNa
GoTo hat geschrieben:Ich erhalte eine 404 Fehlerseite, anstatt einer von phpbb generierten mit Style versehen Seite mit der Aussage, dass das Thema nicht existiert.
Liegt dann wohl eher am Provider, der da seine eigene 404 Fehlerseite nach vorne schubst, also das phpbb3 damit überlagert. Da bräuchte man aber wenigstens einen Testuser, besser Admin- und FTP-Zugriff, um das mit letzter Sicherheit sagen zu können.

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 17.05.2012 17:32
von BNa
Analyse / Fazit

Der Bug war/ist bekannt

http://www.phpbb.com/community/viewtopi ... #p12796628
viewtopic.php?f=74&t=201686#p1156011
viewtopic.php?f=74&t=201686#p1156015

Diese wichtige (zusätzliche) Fehlermeldung

Code: Alles auswählen

template->_tpl_load_file(): File /message_body.html does not exist or is empty 
hättest Du gesehen, wenn bei Dir der Debug Modus aktiv gewesen wäre. Habe es mal aktiviert und es werden Fehlermeldungen verschiedener Mods ausgeworfen.
Öffne

config.php

Finde

Code: Alles auswählen

// @define('DEBUG', true);
// @define('DEBUG_EXTRA', true);          
Ersetze mit

Code: Alles auswählen

@define('DEBUG', true);
@define('DEBUG_EXTRA', true); 
Dein includes/functions.php scheint breitgemoddet, da hier auch die Ursache des Fehlers lag.
http://www.phpbb.com/community/viewtopic.php?f=46&t=2092747#p12796628 hat geschrieben: That error occurs if your mod calls $user->add_lang() before $user->setup()
Da dieser Umstand noch nicht zu allen Modschreibern durchgedrungen ist, hält sich in oben genannter Datei kaum eine der Mod dran.

Daher gibt es nur einen Quickfix.

Öffne

includes/functions.php

Finde

Code: Alles auswählen

function page_header($page_title = '', $display_online_list = true, $item_id = 0, $item = 'forum')
{

    global $db, $config, $template, $SID, $_SID, $_EXTRA_URL, $user, $auth, $phpEx, $phpbb_root_path; 
Dahinter füge ein

Code: Alles auswählen

    // bug prevent by BNa
    $user->setup();
    // bug prevent by BNa          
Da hier Mod-Chaos herrscht, ist auch das komplette Error-Handling für nicht vorhandene Attachments, Foren, Themen und User breit und es werden keine Sprachvariablen aus der language/de/common.php geparst. Deswegen gibt es nur eine Hardcoded-Lösung, die aber wenigstens funktioniert, denn mit obigem ersten Fix ist erstmal "nur" die Fehlermeldung weg (bzw. die weisse Seite).

Daher weiter in derselben Datei (ist aber über dem letzten Finde)

Finde

Code: Alles auswählen

            if ($msg_text == 'ERROR_NO_ATTACHMENT' || $msg_text == 'NO_FORUM' || $msg_text == 'NO_TOPIC' || $msg_text == 'NO_USER')
            {
                send_status_line(404, 'Not Found');
            } 
Ersetze mit

Code: Alles auswählen

            if ($msg_text == 'ERROR_NO_ATTACHMENT' || $msg_text == 'NO_FORUM' || $msg_text == 'NO_TOPIC' || $msg_text == 'NO_USER')
            {

                send_status_line(404, 'Not Found');

            // bug prevent by BNa
            if ($msg_text == 'ERROR_NO_ATTACHMENT'){
            $msg_title = 'Information';
            $msg_text  = 'Der von dir ausgewählte Anhang existiert nicht';} 
            
            if ($msg_text == 'NO_FORUM'){
            $msg_title = 'Information';
            $msg_text  = 'Das von dir ausgewählte Forum existiert nicht';} 
            
            if ($msg_text == 'NO_TOPIC'){
            $msg_title = 'Information';
            $msg_text  = 'Das von dir ausgewählte Thema existiert nicht';}         
            
            if ($msg_text == 'NO_USER'){
            $msg_title = 'Information';
            $msg_text  = 'Der von dir ausgewählte User existiert nicht';} 
            // bug prevent by BNa    

            }     
Bearbeite und speichere die includes/functions.php am besten mit Notepad++
Wichtig: Vor dem Speichern > 'Kodierung' > 'Kodiere zu UTF8 ohne BOM' .

Das wars schon.

Hinweis: Die Gründe für die Fehlermeldungen im aktivierten Debug Modus solltest Du mal fixen.

Schönen Tag...

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 18.05.2012 12:13
von GoTo
Wow! Das ist ja richtig klasse von dir! Danke für die Analyse und die Erklärungen. Ich werde das nächste Woche mal einbauen.

Das mit dem Debug Modus ist auch gut zu wissen. Man lernt ja immer dazu. Ich werde mir die Fehlermeldungen mal zu Gemüte führen und hoffentlich werde ich dann alles fixen können. Auf jeden Fall vielen vielen Dank!

Re: Fehlermeldung beim Aufrufen eines nicht existierenden Be

Verfasst: 18.05.2012 13:24
von BNa
GoTo hat geschrieben: Ich werde mir die Fehlermeldungen mal zu Gemüte führen
Da ich keinen Support via PN gebe, hier ein paar Stützen

Index, Portal, Viewforum (ausser ucp und acp)

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 147: Undefined index: user_id
[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 151: Undefined index: user_perm_from
[phpBB Debug] PHP Notice: in file [ROOT]/portal/includes/constants.php on line 24: Constant PORTAL_CONFIG_TABLE already defined
[phpBB Debug] PHP Notice: in file [ROOT]/portal/modules/portal_recent.php on line 68: Undefined index: board3_exclude_forums_11
Viewtopic

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 147: Undefined index: user_id
[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 151: Undefined index: user_perm_from
[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_thanks.php on line 526: Undefined index: THANK_TEXT_2PL
[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_thanks.php on line 535: Undefined index: CLEAR_LIST_THANKS
Nach dem Absenden eines Posts

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 147: Undefined index: user_id
[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 151: Undefined index: user_perm_from
[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_thanks.php on line 526: Undefined index: THANK_TEXT_2PL
[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_thanks.php on line 535: Undefined index: CLEAR_LIST_THANKS
[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_thanks.php on line 526: Undefined index: THANK_TEXT_2PL
[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_thanks.php on line 535: Undefined index: CLEAR_LIST_THANKS
Vorausgeschickt, es sind keine Funktionsbugs. Es sind eher nicht definierte oder in bestimmten Situationen nicht definierte Index'e. Also geht es entweder um nicht aktuelle Versionen des Thanks Mods und der Gallery, es wurden bei dem Einbau dieser Mods Fehler gemacht, die Mods selbst sind auch in der aktuellen Versionen fehlerhaft oder nicht verträglich mit Deinem speziellen Mix anderer Mods.

Lösung / Zum Beispiel:

Undefined index: THANK_TEXT_2PL ist einfach > Es fehlt der Sprachdateieintrag in der entsprechenden Languagedatei.
Undefined index: user_perm_from ist etwas weniger einfach > Hier wurde die genannte Variable nicht oder nicht für alle Situationen/Bedingungen "vordefiniert"

Edit: Gerade gefunden, diese Fehlermeldung betreffend

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 147: Undefined index: user_id
[phpBB Debug] PHP Notice: in file [ROOT]/includes/gallery/gallery.php on line 151: Undefined index: user_perm_from
http://www.flying-bits.org/viewtopic.php?f=105&t=3859
http://www.flying-bits.org/viewtopic.php?f=105&t=3928