message_die() was called multiple times

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

message_die() was called multiple times

Beitrag von modbo »

Deine phpBB Version: 2.0.16
Typ Deines phpBB Forums: Premodded phpBB
MODs: Ja
Dein Wissensstand: Grundwissen
Link zu Deinem Forum: http://www.svbomber.de

PHP Version:
MySQL Version:


Was hast Du gemacht, bevor das Problem aufgetreten ist?
Update auf 2.0.16, DL Mod Full Pack mehrfach geuppt.


Was hast Du bereits versucht um das Problem zu lösen?
Noch nichts.



Fehlerbeschreibung und Nachricht

Beim Posten erscheint

Code: Alles auswählen

message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?
Der Beitrag wird jedoch im Forum abgesetzt. Scheint an der posting.php zu liegen.

Jemand eine Idee?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Eher an dem Update auf 2.0.16.
Diesen Fehler hab ich hier nicht und auch nicht im DL-Testboard.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

So. Hab den Mod für eine verbesserte Anzeige der message_die() eingebaut.
Der fördert zu Tage:

Code: Alles auswählen

Critical Error!
message_die() was called multiple times.
 
--------------------------------------------------------------------------------
Error #1 
Deine Nachricht wurde erfolgreich eingetragen.

Hier klicken, um deine Nachricht anzuzeigen

Hier klicken, um zum Forum zurückzukehren 

 
--------------------------------------------------------------------------------
 Error #2 
Could not check hacklist entries 

Line : 610
File : /www/htdocs/xxxxx/forum/includes/page_header.php 
SQL : SELECT id FROM downloads WHERE hacklist = 1 
 
--------------------------------------------------------------------------------
 Please, contact the webmaster. Thank you.
Scheint doch vom DL Mod zu kommen. Das DB-Update hatte ich letztens allerdinsg nochmal durchlaufen lassen, mit dem Ergebnis, dass er mir die Gesamtklicks zerschossen hatte.

page_header.php um Zeile 610

Code: Alles auswählen

	$sql = "SELECT id FROM " . $table_prefix . "downloads
		WHERE hacklist = 1";
	if(!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not check hacklist entries', '', __LINE__, __FILE__, $sql);
	}
//edit:
Mit

Code: Alles auswählen

	$sql = "SELECT id FROM " . DOWNLOADS_TABLE . "
		WHERE hacklist = 1";
funktioniert es dann wieder :)
Zuletzt geändert von modbo am Mi 29.Jun, 2005 10:58, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Okay, scheinbar hat Dein Board hier ein Problem.
Ersetze dann in der page_header.php den Block

Code: Alles auswählen

	$sql = "SELECT id FROM " . $table_prefix . "downloads
		WHERE hacklist = 1";
	if(!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not check hacklist entries', '', __LINE__, __FILE__, $sql);
	}

	$total = $db->sql_numrows($result);
	$db->sql_freeresult($result);

	if ($total > 0)
	{
		$u_hacks_list = append_sid("hacks_list.$phpEx");
		$l_hacks_list = $lang['Dl_hacks_list'];
		$img_hacklist = '<img src="templates/subSilver/images/icon_mini_h.gif" width="13" height="13" border="0" alt="'.$lang['Dl_hacks_list'].'" title="'.$lang['Dl_hacks_list'].'" hspace="3" />';
	}
	else
	{
		$u_hacks_list = $img_hacklist = $l_hacks_list = '';
	}
mit diesem hier:

Code: Alles auswählen

	$sql = "SELECT id FROM " . $table_prefix . "downloads
		WHERE hacklist = 1";
	if($result = $db->sql_query($sql))
	{
		$total = $db->sql_numrows($result);
		$db->sql_freeresult($result);

		if ($total > 0)
		{
			$u_hacks_list = append_sid("hacks_list.$phpEx");
			$l_hacks_list = $lang['Dl_hacks_list'];
			$img_hacklist = '<img src="templates/subSilver/images/icon_mini_h.gif" width="13" height="13" border="0" alt="'.$lang['Dl_hacks_list'].'" title="'.$lang['Dl_hacks_list'].'" hspace="3" />';
		}
		else
		{
			$u_hacks_list = $img_hacklist = $l_hacks_list = '';
		}
	}
Dann sollte der Fehler verschwunden sein.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Ok, damit geht es auch, weil die message() entfernt wurde.

Nur siehe mein post zuvor, welcher das Problem ebenfalls löste.
Dort ist beim Updatepaket des DL Mods von v0.6.4 auf v0.6.5 eine Änderung im Quelltext hineingekommen!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Hab den Mod für eine verbesserte Anzeige der message_die() eingebaut.
:eek: Welcher MOD ist das?
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Code: Alles auswählen

############################################################## 
## MOD Title: Fix message_die for multiple errors MOD 
## MOD Author: markus_petrux < phpbb.mods@phpmix.com > (Markus) http://www.phpmix.com 
## MOD Description: This MOD replaces the "message_die() was called multiple times" message 
##     with something more useful. It reports a list of all "those" error messages with all 
##     relevant information. So that may help board administrators to identify the problem. 
## MOD Version: 1.0.3 
## 
## Installation Level: (Easy) 
## Installation Time: 3 Minutes 
## Files To Edit: 1 
##    includes/functions.php 
## Included Files: 0 
############################################################## 
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the 
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code 
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered 
## in our MOD-Database, located at: http://www.phpbb.com/mods/ 
############################################################## 
## Author Notes: 
## 
## - Technical comments: 
##   Actually, the "message_die() was called multiple times" message is unlike to happen on a 
##   fresh phpBB board, but it might happen related to MODs, depending on how they are coded. 
## 
## 
## - MOD related comments: 
##   Tested with phpBB 2.0.10 
##   This MOD is EasyMOD friendly. 
## 
############################################################## 
## MOD History: 
## 
## 2004/10/17 - 1.0.3 
## - Added a mailto: link to the "Please, contact the webmaster" message. 
##   This will be only available if the CONFIG table has been read, though. 
##   Thanks again to Ptirhiik for the idea. :-) 
##   Certainly it sounds wiser than using "smoke signals" to contact the webmaster. 
## 
## 2004/10/17 - 1.0.2 
## - Added a "Please, contact the webmaster" message at the end of the report. 
## - Fixed define(HAS_DIED, 1); typo. Thanks to Ptirhiik for letting me know this. 
## 
## 2004/10/17 - 1.0.0 
## - Initial release 
## 
############################################################## 
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD 
############################################################## 

# 
#-----[ OPEN ]------------------------------------------------ 
# 
includes/functions.php 
# 
#-----[ FIND ]------------------------------------------------ 
# 
   if(defined('HAS_DIED')) 
# 
#-----[ BEFORE, ADD ]----------------------------------------- 
# 
//+MOD: Fix message_die for multiple errors MOD 
   static $msg_history; 
   if( !isset($msg_history) ) 
   { 
      $msg_history = array(); 
   } 
   $msg_history[] = array( 
      'msg_code'   => $msg_code, 
      'msg_text'   => $msg_text, 
      'msg_title'   => $msg_title, 
      'err_line'   => $err_line, 
      'err_file'   => $err_file, 
      'sql'      => $sql 
   ); 
//-MOD: Fix message_die for multiple errors MOD 

# 
#-----[ FIND ]------------------------------------------------ 
# 
      die("message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?"); 
# 
#-----[ REPLACE WITH ]---------------------------------------- 
# 
//+MOD: Fix message_die for multiple errors MOD 

      // 
      // This message is printed at the end of the report. 
      // Of course, you can change it to suit your own needs. ;-) 
      // 
      $custom_error_message = 'Please, contact the %swebmaster%s. Thank you.'; 
      if ( !empty($board_config) && !empty($board_config['board_email']) ) 
      { 
         $custom_error_message = sprintf($custom_error_message, '<a href="mailto:' . $board_config['board_email'] . '">', '</a>'); 
      } 
      else 
      { 
         $custom_error_message = sprintf($custom_error_message, '', ''); 
      } 
      echo "<html>\n<body>\n<b>Critical Error!</b><br />\nmessage_die() was called multiple times.<br />&nbsp;<hr />"; 
      for( $i = 0; $i < count($msg_history); $i++ ) 
      { 
         echo '<b>Error #' . ($i+1) . "</b>\n<br />\n"; 
         if( !empty($msg_history[$i]['msg_title']) ) 
         { 
            echo '<b>' . $msg_history[$i]['msg_title'] . "</b>\n<br />\n"; 
         } 
         echo $msg_history[$i]['msg_text'] . "\n<br /><br />\n"; 
         if( !empty($msg_history[$i]['err_line']) ) 
         { 
            echo '<b>Line :</b> ' . $msg_history[$i]['err_line'] . '<br /><b>File :</b> ' . $msg_history[$i]['err_file'] . "</b>\n<br />\n"; 
         } 
         if( !empty($msg_history[$i]['sql']) ) 
         { 
            echo '<b>SQL :</b> ' . $msg_history[$i]['sql'] . "\n<br />\n"; 
         } 
         echo "&nbsp;<hr />\n"; 
      } 
      echo $custom_error_message . '<hr /><br clear="all">'; 
      die("</body>\n</html>"); 
//-MOD: Fix message_die for multiple errors MOD 
# 
#-----[ FIND ]------------------------------------------------ 
# 
   define(HAS_DIED, 1); 
# 
#-----[ REPLACE WITH ]---------------------------------------- 
# 
   define('HAS_DIED', 1); 
# 
#-----[ SAVE/CLOSE ALL FILES ]-------------------------------- 
# 
# EoM 
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

@modbo
Mit der Änderung der Tablle kann es zu Problemen kommen, wenn die Konstante nicht definiert ist. Und das ist ausserhalb des Download Mods auch nicht der Fall.
Es sei denn, Du hast die letzten Update-Anleitungen missachtet ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

@ modbo

thx
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

[quote="oxpus - Mi 29.Jun, 2005 12:37";p="37294"]Und das ist ausserhalb des Download Mods auch nicht der Fall.[/quote]
Jein. Der Zugriff auf die Tabelle erfolgt durch die page_header.php, somit auch ausserhalb des DL Mods.
[quote="oxpus - Mi 29.Jun, 2005 12:37";p="37294"]Es sei denn, Du hast die letzten Update-Anleitungen missachtet ;)[/quote]
Nein, habe ich ja im zugehörigen Topic des Full Pack Dl Mods gepostet, was ich gemacht habe.
Nur hier liegt meiner Meinung nach das Problem.

In der Version 0.6.4 lautete der ensprechende Abschnitt in der page_header.php
$sql = "SELECT id FROM " . DOWNLOADS_TABLE . "
WHERE hacklist = 1";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not check hacklist entries', '', __LINE__, __FILE__, $sql);
}
Die zugehörige Konstante wurde in der constants.php definiert
define('DOWNLOADS_TABLE', $table_prefix.'downloads');
Ab v0.6.5 lautet der entsprechende Abschnitt in der page_header.php aber
$sql = "SELECT id FROM " . $table_prefix . "downloads
WHERE hacklist = 1";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not check hacklist entries', '', __LINE__, __FILE__, $sql);
}
Die Konstante wir jetzt in der dl_common.php definiert, lautet aber immer noch
define('DOWNLOADS_TABLE', $table_prefix.'downloads');
Warum klappt es also bei mir, wenn ich den entsprechenden Abschnitt aus der v.0.6.4 verwende und nicht den aus der v.0.6.5.???

Sry, dass ich so hartnäckig bin, aber ich möchte es gerne verstehen.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Die zugehörige Konstante wurde in der constants.php definiert
EBEN NICHT!
In der neuen Version ist die Installation des Dl Mods in der constants.php rückgängig zu machen, da die dl_common.php eingeführt wurde. Und die kann ich schlecht in der page_header.php einbinden und daher muss der Tabellenname so erstellt werden!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Ja, kann ich alles nachvollziehen, war auch der Meinung, dass alles so umgesetzt zu haben.

ABER, dieser Logik folgend hätte dann als Fehlermeldung ausgegeben werden müssen (mit meiner Version), dass die Konstante DOWNLOADS_TABLE nicht definiert ist, da sie in der constants.php nicht mehr enthalten ist.
Daraufhin habe ich die Datei nochmals durchsucht, und festgestellt, dass eine Doppeldefinition vorliegt.

Nun gehts ja mit deiner Variante, wobei ich nicht nachvollziehen kann, warum er bei mir dort mit der alten Variante gemeckert hat.

Die Fehlermeldung sagt doch aus, er könne die Einträge in der Tabelle nicht prüfen.
Kann er die nun wirklich nicht prüfen, es wird nur keine Fehlermeldung mehr ausgegeben?
Die Problematik bestand ja mit der Definition der Konstanten in der constants.php nicht. Warum sind die jetzt in die dl_common.php gewandert?
Zuletzt geändert von modbo am Mi 29.Jun, 2005 15:31, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Die Problematik bestand ja mit der Definition der Konstanten in der constants.php nicht. Warum sind die jetzt in die dl_common.php gewandert?
Sicher ist der Platz in der constants.php hier einfacher, aber die Definitionen, includes, etc. brauchen nicht immer im Board mitgeführt zu werden. Daher hat der Downlod Mod eine eigene Definitions-Datei erhalten.
Die Sprachfiles sind ja auch separat und das schon seit langem ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Mmh, ok.

Kannst du mir jetzt noch irgendwie schmackhaft machen, warum das message_die() bei mir Probleme bereitet hat?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wenn ich das wüsste, wäre auch 10000 anderen Usern geholfen.
Es kommt immer vor, wenn mit der Funktion message_die() bereits ein Test ausgegeben wird und dann nochmals die Funktion aufgerufen werden soll.
Normalerwiese kein Problem, aber zwei Meldungen zusammen wären unlogisch, daher wird das mit der betreffenden Fehlermeldung quittiert.
Hier ist also immer anzuschauen, was zuletzt eingebaut wurde und in welchen Situationen dieses zum Tragen käme.
Bei einer SQL-Abfrage kann man das einfach abstellen, an anderen Stellen wird das dann ggf. schon komplizierter, wenn unbedingt die Meldung angezeigt werden soll...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Ok. Danke für deine Geduld :anbet
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Keine Ursache. Ist doch mein Job ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten