24. November 2017, 23:20:36
SMFPortal.de

Autor Thema: Fehlermeldung bei Verwaltung der Boards - Fatal error  (Gelesen 1285 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

19. April 2016, 09:05:26
Gelesen 1285 mal

Herbst


Hallo zusammen,

seit ich die Mod. PrettyUrls deinstalliert und neu installiert habe, erscheint beim Aufruf der Boards-Verwaltung im Adminbereich folgende Fehlermeldung:

Fatal error: Cannot redeclare template_pretty_board_url() (previously declared in //Christenforum/Sources/Load.php(2185) : eval()'d code:637) in //Christenforum/Sources/Load.php(2185) : eval()'d code on line 720

Die Seite erscheint in weiß mit obigem Text und lässt sich überhaupt nicht mehr aufrufen, die komplette Boardverwaltung ist geschossen...!

Da ist offenbar ein doppelter Eintrag in der Load.php, aber wie kann man den in dem ewiglangen Script finden, und welcher der beiden Einträge muss gelöscht werden? Beim öffnen des Scripts im Texteditor sieht man keine "lines"... woher weiß man dann wo die "line 637" ist?

Hoffe auf Eure Hilfe

LG Hanno

19. April 2016, 10:08:43
Antwort #1

Parmaster

Administration
Mit welchem Texteditor machst du denn die Datei auf? Normalerweise steht doch links die Zeilennummer (Zeilennummer 637).

Und wenn zwei mal der gleiche Code vorhanden ist, ist es egal welchen man dann löscht.
Eine digitale Welt zur Neugestaltung des menschlichen Daseins

20. April 2016, 09:16:47
Antwort #2

Herbst


Ich habs jetzt mit Windows-Editor geöffnet, ja, da sieht man die Lines.

Das Thema gibt es hier im SMFPortal schon einmal - siehe hier - aber das hilft mir noch nicht wirklich weiter. Da hatte jemand dasselbe Problem, weil er 2Mal in einer Datei dieselbe Funktion hatte, so wie bei mir. Ich weiß bloß nicht, wo eine Funktion oder ein Code anfängt und wo aufhört, wie man das erkennt und löscht.

Code in Line 637:
Code
$board_info = array('moderators' => array());
return;

Vielleicht kann jemand etwas damit anfangen?

In Zeile 720 steht:
Code
'name' => $row['real_name'],

In Line 760 die Fehlermeldung:
Code
$board_info = array('moderators' => array(),
'error' => 'exist'

Hier die Basis Info in Zeile 668 bis 710:
Code
// Basic operating information. (globals... :/)
$board_info = array(
'id' => $board,
'moderators' => array(),
'cat' => array(
'id' => $row['id_cat'],
'name' => $row['cname']
),
'name' => $row['bname'],
'description' => $row['description'],
'num_topics' => $row['num_topics'],
'unapproved_topics' => $row['unapproved_topics'],
'unapproved_posts' => $row['unapproved_posts'],
'unapproved_user_topics' => 0,
'parent_boards' => getBoardParents($row['id_parent']),
'parent' => $row['id_parent'],
'child_level' => $row['child_level'],
'theme' => $row['id_theme'],
'override_theme' => !empty($row['override_theme']),
'profile' => $row['id_profile'],
'redirect' => $row['redirect'],
'posts_count' => empty($row['count_posts']),
'cur_topic_approved' => empty($topic) || $row['approved'],
'cur_topic_starter' => empty($topic) ? 0 : $row['id_member_started'],
);

Das gesamte Script ist mit über 2000 Zeilen leider zu lang, um es hier vollständig anzuzeigen. Ich poste es hier aber mal von Zeile 600 bis zur Fehlermeldung:
Code
		// Looking through the message table can be slow, so try using the cache first.
if (($topic = cache_get_data('msg_topic-' . $_REQUEST['msg'], 120)) === NULL)
{
$request = $smcFunc['db_query']('', '
SELECT id_topic
FROM {db_prefix}messages
WHERE id_msg = {int:id_msg}
LIMIT 1',
array(
'id_msg' => $_REQUEST['msg'],
)
);

// So did it find anything?
if ($smcFunc['db_num_rows']($request))
{
list ($topic) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
// Save save save.
cache_put_data('msg_topic-' . $_REQUEST['msg'], $topic, 120);
}
}

// Remember redirection is the key to avoiding fallout from your bosses.
if (!empty($topic))
redirectexit('topic=' . $topic . '.msg' . $_REQUEST['msg'] . '#msg' . $_REQUEST['msg']);
else
{
loadPermissions();
loadTheme();
fatal_lang_error('topic_gone', false);
}
}

// Load this board only if it is specified.
if (empty($board) && empty($topic))
{
$board_info = array('moderators' => array());
return;
}

if (!empty($modSettings['cache_enable']) && (empty($topic) || $modSettings['cache_enable'] >= 3))
{
// !!! SLOW?
if (!empty($topic))
$temp = cache_get_data('topic_board-' . $topic, 120);
else
$temp = cache_get_data('board-' . $board, 120);

if (!empty($temp))
{
$board_info = $temp;
$board = $board_info['id'];
}
}

if (empty($temp))
{
$request = $smcFunc['db_query']('', '
SELECT
c.id_cat, b.name AS bname, b.description, b.num_topics, b.member_groups,
b.id_parent, c.name AS cname, IFNULL(mem.id_member, 0) AS id_moderator,
mem.real_name' . (!empty($topic) ? ', b.id_board' : '') . ', b.child_level,
b.id_theme, b.override_theme, b.count_posts, b.id_profile, b.redirect,
b.unapproved_topics, b.unapproved_posts' . (!empty($topic) ? ', t.approved, t.id_member_started' : '') . '
FROM {db_prefix}boards AS b' . (!empty($topic) ? '
INNER JOIN {db_prefix}topics AS t ON (t.id_topic = {int:current_topic})' : '') . '
LEFT JOIN {db_prefix}categories AS c ON (c.id_cat = b.id_cat)
LEFT JOIN {db_prefix}moderators AS mods ON (mods.id_board = {raw:board_link})
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = mods.id_member)
WHERE b.id_board = {raw:board_link}',
array(
'current_topic' => $topic,
'board_link' => empty($topic) ? $smcFunc['db_quote']('{int:current_board}', array('current_board' => $board)) : 't.id_board',
)
);
// If there aren't any, skip.
if ($smcFunc['db_num_rows']($request) > 0)
{
$row = $smcFunc['db_fetch_assoc']($request);

// Set the current board.
if (!empty($row['id_board']))
$board = $row['id_board'];

// Basic operating information. (globals... :/)
$board_info = array(
'id' => $board,
'moderators' => array(),
'cat' => array(
'id' => $row['id_cat'],
'name' => $row['cname']
),
'name' => $row['bname'],
'description' => $row['description'],
'num_topics' => $row['num_topics'],
'unapproved_topics' => $row['unapproved_topics'],
'unapproved_posts' => $row['unapproved_posts'],
'unapproved_user_topics' => 0,
'parent_boards' => getBoardParents($row['id_parent']),
'parent' => $row['id_parent'],
'child_level' => $row['child_level'],
'theme' => $row['id_theme'],
'override_theme' => !empty($row['override_theme']),
'profile' => $row['id_profile'],
'redirect' => $row['redirect'],
'posts_count' => empty($row['count_posts']),
'cur_topic_approved' => empty($topic) || $row['approved'],
'cur_topic_starter' => empty($topic) ? 0 : $row['id_member_started'],
);

// Load the membergroups allowed, and check permissions.
$board_info['groups'] = $row['member_groups'] == '' ? array() : explode(',', $row['member_groups']);

do
{
if (!empty($row['id_moderator']))
$board_info['moderators'][$row['id_moderator']] = array(
'id' => $row['id_moderator'],
'name' => $row['real_name'],
'href' => $scripturl . '?action=profile;u=' . $row['id_moderator'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_moderator'] . '">' . $row['real_name'] . '</a>'
);
}
while ($row = $smcFunc['db_fetch_assoc']($request));

// If the board only contains unapproved posts and the user isn't an approver then they can't see any topics.
// If that is the case do an additional check to see if they have any topics waiting to be approved.
if ($board_info['num_topics'] == 0 && $modSettings['postmod_active'] && !allowedTo('approve_posts'))
{
$smcFunc['db_free_result']($request); // Free the previous result

$request = $smcFunc['db_query']('', '
SELECT COUNT(id_topic)
FROM {db_prefix}topics
WHERE id_member_started={int:id_member}
AND approved = {int:unapproved}
AND id_board = {int:board}',
array(
'id_member' => $user_info['id'],
'unapproved' => 0,
'board' => $board,
)
);

list ($board_info['unapproved_user_topics']) = $smcFunc['db_fetch_row']($request);
}

if (!empty($modSettings['cache_enable']) && (empty($topic) || $modSettings['cache_enable'] >= 3))
{
// !!! SLOW?
if (!empty($topic))
cache_put_data('topic_board-' . $topic, $board_info, 120);
cache_put_data('board-' . $board, $board_info, 120);
}
}
else
{
// Otherwise the topic is invalid, there are no moderators, etc.
$board_info = array(
'moderators' => array(),
'error' => 'exist'
);
$topic = null;
$board = 0;
}
$smcFunc['db_free_result']($request);
« Letzte Änderung: 20. April 2016, 09:39:12 von Herbst »

21. April 2016, 09:31:32
Antwort #3

Parmaster

Administration
Also normalerweise ist es so, dass wenn man eine Mod deinstalliert, wird der Code wieder aus den Dateien gelöscht. Falls nicht, kommt es bei einer erneuten Installation zu einer Warnung/Fehlermeldung, dass die angegebene Stelle nicht gefunden werden kann (weil ja noch der Code von vorher drin steht).

Ich weiß jetzt natürlich nicht was die Mod geändert hat bzw. wie die Originaldatei aussieht.

Vergleiche doch mal beide Dateien (Original und deine modifizierte).

Dann nimmst du die Mod, schaust welche Änderung diese in der Datei macht, und trägst es händisch nach (bei der Originaldatei).

Falls du mehrere Mods installiert hast, welche auch in der Datei Änderungen gemacht haben, dann schau welche Änderung PrettyURLs macht, und such genau den Code welcher dann zwei mal vorhanden ist.
Eine digitale Welt zur Neugestaltung des menschlichen Daseins

 

Internes

Nutzungsbedingungen Impressum

Wissenswertes

Hilfe Knowledge Base

Nützliches

Downloads Kleinanzeigen Socialmedia