Seite 1 von 1

Nach Umzug des Boards noch ein "kleines" Problem.

Verfasst: 01.11.2006 11:42
von Brennerlein
Moin moin,

nach vielen Lesen der Hilfen und einiger Beiträge habe ich leider doch noch ein Problem.

Mein Ziel:
-Umzug einer Domäne & Webspace


Mein Board liegt auf Webspace "A" und Domäne "A" und soll auf Webspace "B" mit Domäne "B" umziehen. Zu Testzwecken habe ich Domäne "C" eingerichtet.

Gestern habe ich dann die ersten Versuche des Umzuges übernommen. Die Standardanleitung im Board ist leider weniger gut wegen mangelnder Berechtigung beim importieren per mysql.
Ich bin dann also folgendermaßen vorgegangen:

-auf Domäne A mysqldumper installiert & Backup durchgeführt
-auf Domäne C Datenbank erstellt
-auf Domäne C Forum installiert
-auf Domäne C mysqldumper installiert & Backup von Domäne A eingespielt
-auf Domäne C die alten Daten komplett von Domäne A rüberkopiert und vorher gesicherte config.php wieder rauf kopiert
-auf Domäne C myphpdoktor installiert, es wurde aber keine Fehler gefunden

Soweit hat nun alles geklappt. Das Board springt nicht mehr (wie bei den Versuchen vorher) beim Login auf die alte Datenbank um. Alles sieht aus wie vorher. Login geht auch wunderbar aber sobald man aber einen Beitrag schreiben oder editieren will kommt über dem Board ein wilder Text.
Dadrunter ist das Board und man kann auch ohne Probleme seinen Beitrag verfassen oder erfolgreich editieren.

Hier mal der "wilde" Text:
nasty kludge to remove the username var ... till (if?) // translators update their templates $emailer->msg = preg_replace('#[ ]?{USERNAME}#', '', $emailer->msg); $emailer->assign_vars(array( 'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('
', "\n", "-- \n" . $board_config['board_email_sig']) : '', 'SITENAME' => $board_config['sitename'], 'TOPIC_TITLE' => $topic_title, 'U_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_POST_URL . "=$post_id#$post_id", 'U_STOP_WATCHING_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_TOPIC_URL . "=$topic_id&unwatch=topic") ); $emailer->send(); $emailer->reset(); } } } $db->sql_freeresult($result); if ($update_watched_sql != '') { $sql = "UPDATE " . TOPICS_WATCH_TABLE . " SET notify_status = " . TOPIC_WATCH_NOTIFIED . " WHERE topic_id = $topic_id AND user_id IN ($update_watched_sql)"; $db->sql_query($sql); } } $sql = "SELECT topic_id FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id = $topic_id AND user_id = " . $userdata['user_id']; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain topic watch information', '', __LINE__, __FILE__, $sql); } $row = $db->sql_fetchrow($result); if (!$notify_user && !empty($row['topic_id'])) { $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id = $topic_id AND user_id = " . $userdata['user_id']; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete topic watch information', '', __LINE__, __FILE__, $sql); } } else if ($notify_user && empty($row['topic_id'])) { $sql = "INSERT INTO " . TOPICS_WATCH_TABLE . " (user_id, topic_id, notify_status) VALUES (" . $userdata['user_id'] . ", $topic_id, 0)"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not insert topic watch information', '', __LINE__, __FILE__, $sql); } } } } // // Fill smiley templates (or just the variables) with smileys // Either in a window or inline // function generate_smilies($mode, $page_id) { global $db, $board_config, $template, $lang, $images, $theme, $phpEx, $phpbb_root_path; global $user_ip, $session_length, $starttime; global $userdata; $inline_columns = 4; $inline_rows = 5; $window_columns = 8; if ($mode == 'window') { $userdata = session_pagestart($user_ip, $page_id); init_userprefs($userdata); $gen_simple_header = TRUE; $page_title = $lang['Emoticons']; include($phpbb_root_path . 'includes/page_header.'.$phpEx); $template->set_filenames(array( 'smiliesbody' => 'posting_smilies.tpl') ); } $sql = "SELECT emoticon, code, smile_url FROM " . SMILIES_TABLE . " ORDER BY smilies_id"; if ($result = $db->sql_query($sql)) { $num_smilies = 0; $rowset = array(); while ($row = $db->sql_fetchrow($result)) { if (empty($rowset[$row['smile_url']])) { $rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code'])); $rowset[$row['smile_url']]['emoticon'] = $row['emoticon']; $num_smilies++; } } if ($num_smilies) { $smilies_count = ($mode == 'inline') ? min(19, $num_smilies) : $num_smilies; $smilies_split_row = ($mode == 'inline') ? $inline_columns - 1 : $window_columns - 1; $s_colspan = 0; $row = 0; $col = 0; while (list($smile_url, $data) = @each($rowset)) { if (!$col) { $template->assign_block_vars('smilies_row', array()); } $template->assign_block_vars('smilies_row.smilies_col', array( 'SMILEY_CODE' => $data['code'], 'SMILEY_IMG' => $board_config['smilies_path'] . '/' . $smile_url, 'SMILEY_DESC' => $data['emoticon']) ); $s_colspan = max($s_colspan, $col + 1); if ($col == $smilies_split_row) { if ($mode == 'inline' && $row == $inline_rows - 1) { break; } $col = 0; $row++; } else { $col++; } } if ($mode == 'inline' && $num_smilies > $inline_rows * $inline_columns) { $template->assign_block_vars('switch_smilies_extra', array()); $template->assign_vars(array( 'L_MORE_SMILIES' => $lang['More_emoticons'], 'U_MORE_SMILIES' => append_sid("posting.$phpEx?mode=smilies")) ); } $template->assign_vars(array( 'L_EMOTICONS' => $lang['Emoticons'], 'L_CLOSE_WINDOW' => $lang['Close_window'], 'S_SMILIES_COLSPAN' => $s_colspan) ); } } if ($mode == 'window') { $template->pparse('smiliesbody'); include($phpbb_root_path . 'includes/page_tail.'.$phpEx); } } /** * Called from within prepare_message to clean included HTML tags if HTML is * turned on for that post * @param array $tag Matching text from the message to parse */ function clean_html($tag) { global $board_config; if (empty($tag[0])) { return ''; } $allowed_html_tags = preg_split('/, */', strtolower($board_config['allow_html_tags'])); $disallowed_attributes = '/^(?:style|on)/i'; // Check if this is an end tag preg_match('/<[^\w\/]*\/[\W]*(\w+)/', $tag[0], $matches); if (sizeof($matches)) { if (in_array(strtolower($matches[1]), $allowed_html_tags)) { return ''; } else { return htmlspecialchars(''); } } // Check if this is an allowed tag if (in_array(strtolower($tag[1]), $allowed_html_tags)) { $attributes = ''; if (!empty($tag[2])) { preg_match_all('/[\W]*?(\w+)[\W]*?=[\W]*?(["\'])((?:(?!\2).)*)\2/', $tag[2], $test); for ($i = 0; $i < sizeof($test[0]); $i++) { if (preg_match($disallowed_attributes, $test[1][$i])) { continue; } $attributes .= ' ' . $test[1][$i] . '=' . $test[2][$i] . str_replace(array('[', ']'), array('[', ']'), htmlspecialchars($test[3][$i])) . $test[2][$i]; } } if (in_array(strtolower($tag[1]), $allowed_html_tags)) { return '<' . $tag[1] . $attributes . '>'; } else { return htmlspecialchars('<' . $tag[1] . $attributes . '>'); } } // Finally, this is not an allowed tag so strip all the attibutes and escape it else { return htmlspecialchars('<' . $tag[1] . '>'); } } ?>

Solange das noch so ist will ich den eigentlichen Umzug lieber noch nicht wagen und hoffe auf Hilfe bzw. Lösungsvorschläge.

Re: Nach Umzug des Boards noch ein "kleines" Probl

Verfasst: 01.11.2006 12:16
von gloriosa
Hallo,
diese Reihenfolge
Brennerlein hat geschrieben:-auf Domäne A mysqldumper installiert & Backup durchgeführt
-auf Domäne C Datenbank erstellt
-auf Domäne C Forum installiert
-auf Domäne C mysqldumper installiert & Backup von Domäne A eingespielt
-auf Domäne C die alten Daten komplett von Domäne A rüberkopiert und vorher gesicherte config.php wieder rauf kopiert
-auf Domäne C myphpdoktor installiert, es wurde aber keine Fehler gefunden
ist auf den ersten Blick richtig, entspricht jedoch nicht der Vorgehensweise die in >>> KB:umzug <<< beschrieben ist. :oops:

Du brauchst kein Board auf der neuen Domain vorinstallieren, da Du ja sowohl die Dateien vom alten Webspace als auch die Datenbank mitnimmst. :o

Du ziehst am Besten probeweise gemäß >>> KB:umzug <<< von Domain A nach der Domain C (die auch eine lokale Testumgebung (XAMPP) sein kann ! :wink:) um.

Verfasst: 01.11.2006 12:51
von Brennerlein
Mein Mittag brauch noch ´ne Stunde, dann werd ich es mal ohne Neuinstallation versuchen. Trotzdem hilft die Anleitung nicht das Sie eben nicht das Thema behandelt wenn man nicht berechtigt mit mysqladmin die alte Datenbank zu importieren.

Verfasst: 01.11.2006 13:13
von gloriosa
Hallo (soviel Höflichkeit muss sein),
im Normalfall, Ausnahmen bestätigen die Regel :D , hat der Inhaber einer Domain uneingeschränkten Zugangs zu allen Funktionalitäten. :wink:

In einer allgemeingültigen Beschreibung wie >>> KB:umzug <<< sollten nicht von vorn herein schon Sonderfälle behandelt werden. Das verwirrt mehr als es nutzt. :wink:

Im Zweifelsfall gibt es ja dieses Board. :D

Verfasst: 01.11.2006 13:22
von Brennerlein
Jetzt hat alles geklappt und das auch ganz fix. Meinen Weg finde ich außerdem für meine Zwecke besser da das alte Forum nicht deaktiviert werden muß bzw. man sich nicht aussperren muß.

Bin jetzt folgendermaßen vorgegangen:

-auf Domäne C eine neue Datenbank erstellt
-lokale config.php angepasst auf neue Datenbank
-Daten des Forums von Domäne A auf Domäne C überspielt
-lokal angepasste config.php auf Domäne C überspielt
-mysqldumper installiert auf beiden Domänen installiert
-auf Domäne A Datenbank gesichert und auf Domäne C wiederhergestellt
-auf Domäne C phpbb-Boarddoktor installiert und damit Verweise der alten Datenbank auf die neue automatisch korrigieren lassen


Bis jetzt funktioniert alles. Werde Domäne C jetzt ausführlich testen. Wenn es keine Fehler gibt ist dann heute Nacht der realle Umzug dran.

Verfasst: 01.11.2006 13:24
von Brennerlein
gloriosa hat geschrieben:Hallo (soviel Höflichkeit muss sein),
im Normalfall, Ausnahmen bestätigen die Regel :D , hat der Inhaber einer Domain uneingeschränkten Zugangs zu allen Funktionalitäten. :wink:

In einer allgemeingültigen Beschreibung wie >>> KB:umzug <<< sollten nicht von vorn herein schon Sonderfälle behandelt werden. Das verwirrt mehr als es nutzt. :wink:

Im Zweifelsfall gibt es ja dieses Board. :D

Stimmt dafür ist dieses Board ja da und vielleicht hilft der hier beschriebene Weg ja noch dem einem oder anderen :D

Verfasst: 01.11.2006 13:45
von Brennerlein
Na zum Glück hab ich erst getestet.

Alles funktioniert nur in den Situationen wo eine Mail versandt wird (Registrierung, bei neuen Beitrag benachrichtigen) kommt eine ca. 20 zeilige Fehlermeldung über dem Board.

Es geht danach trotzdem alles und auch die Mails werden versandt. Auf dem alten Board gibt es diese Meldungen nicht, achja, smtp Versand ist nicht aktiviert.

Hmmm, was muß da noch angepasst werden?


edit:
Das Problem trifft nur auf neue User zu. Die Aktivierungsmail kommt zwar noch an, aber alle weiteren nicht (wenn jemand neuen Beitrag geschrieben hat). Bei den bereits bestehenden Usern geht alles.

Hier mal die Fehlermeldung:
_fix'] = 1; $result = @mail($to, $this->subject, preg_replace("#(?msg), $this->extra_headers); } } // Did it work? if (!$result) { message_die(GENERAL_ERROR, 'Failed sending email :: ' . (($this->use_smtp) ? 'SMTP' : 'PHP') . ' :: ' . $result, '', __LINE__, __FILE__); } return true; } // Encodes the given string for proper display for this encoding ... nabbed // from php.net and modified. There is an alternative encoding method which // may produce lesd output but it's questionable as to its worth in this // scenario IMO function encode($str) { if ($this->encoding == '') { return $str; } // define start delimimter, end delimiter and spacer $end = "?="; $start = "=?$this->encoding?B?"; $spacer = "$end\r\n $start"; // determine length of encoded text within chunks and ensure length is even $length = 75 - strlen($start) - strlen($end); $length = floor($length / 2) * 2; // encode the string and split it into chunks with spacers after each chunk $str = chunk_split(base64_encode($str), $length, $spacer); // remove trailing spacer and add start and end delimiters $str = preg_replace('#' . preg_quote($spacer, '#') . '$#', '', $str); return $start . $str . $end; } // // Attach files via MIME. // function attachFile($filename, $mimetype = "application/octet-stream", $szFromAddress, $szFilenameToDisplay) { global $lang; $mime_boundary = "--==================_846811060==_"; $this->msg = '--' . $mime_boundary . "\nContent-Type: text/plain;\n\tcharset=\"" . $lang['ENCODING'] . "\"\n\n" . $this->msg; if ($mime_filename) { $filename = $mime_filename; $encoded = $this->encode_file($filename); } $fd = fopen($filename, "r"); $contents = fread($fd, filesize($filename)); $this->mimeOut = "--" . $mime_boundary . "\n"; $this->mimeOut .= "Content-Type: " . $mimetype . ";\n\tname=\"$szFilenameToDisplay\"\n"; $this->mimeOut .= "Content-Transfer-Encoding: quoted-printable\n"; $this->mimeOut .= "Content-Disposition: attachment;\n\tfilename=\"$szFilenameToDisplay\"\n\n"; if ( $mimetype == "message/rfc822" ) { $this->mimeOut .= "From: ".$szFromAddress."\n"; $this->mimeOut .= "To: ".$this->emailAddress."\n"; $this->mimeOut .= "Date: ".date("D, d M Y H:i:s") . " UT\n"; $this->mimeOut .= "Reply-To:".$szFromAddress."\n"; $this->mimeOut .= "Subject: ".$this->mailSubject."\n"; $this->mimeOut .= "X-Mailer: PHP/".phpversion()."\n"; $this->mimeOut .= "MIME-Version: 1.0\n"; } $this->mimeOut .= $contents."\n"; $this->mimeOut .= "--" . $mime_boundary . "--" . "\n"; return $out; // added -- to notify email client attachment is done } function getMimeHeaders($filename, $mime_filename="") { $mime_boundary = "--==================_846811060==_"; if ($mime_filename) { $filename = $mime_filename; } $out = "MIME-Version: 1.0\n"; $out .= "Content-Type: multipart/mixed;\n\tboundary=\"$mime_boundary\"\n\n"; $out .= "This message is in MIME format. Since your mail reader does not understand\n"; $out .= "this format, some or all of this message may not be legible."; return $out; } // // Split string by RFC 2045 semantics (76 chars per line, end with \r\n). // function myChunkSplit($str) { $stmp = $str; $len = strlen($stmp); $out = ""; while ($len > 0) { if ($len >= 76) { $out .= substr($stmp, 0, 76) . "\r\n"; $stmp = substr($stmp, 76); $len = $len - 76; } else { $out .= $stmp . "\r\n"; $stmp = ""; $len = 0; } } return $out; } // // Split the specified file up into a string and return it // function encode_file($sourcefile) { if (is_readable(phpbb_realpath($sourcefile))) { $fd = fopen($sourcefile, "r"); $contents = fread($fd, filesize($sourcefile)); $encoded = $this->myChunkSplit(base64_encode($contents)); fclose($fd); } return $encoded; } } // class emailer ?>

Verfasst: 01.11.2006 21:18
von Dr.Death
Hi,

das ist keine "Fehlermeldung", sondern sieht nach einer korrupten Datei aus.

Lade Deine Dateien mal per FTP erneut hoch. Ist mir auch schon einmal passiert.

Verfasst: 01.11.2006 21:32
von Brennerlein
Jo,

hab grad alles von A nochmal runtergeladen und auf C rauf.

Keine Fehler mehr.


DANKE!