Häufige Probleme beim Update von/auf 3.1.x

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Gesperrt
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11943
Registriert: 19.05.2005 21:45
Kontaktdaten:

Häufige Probleme beim Update von/auf 3.1.x

Beitrag von Crizzo »

Nicht unterstützte (zu hohe) PHP Version
phpBB 3.1 unterstützt nicht PHP 7.0 oder höher. Es werden nur PHP-Versionen größer 5.3.3 und kleiner 7.0 unterstützt.

Nicht unterstützte (zu kleine) PHP Version
Wenn deine PHP Version älter als PHP 5.3.3 ist, dann kannst du phpBB 3.1.0 nicht verwenden. Dies führt auch beim Versuchten Update zu einem Fehler, der sich z.B. wie folgt äußern kann:

Code: Alles auswählen

Unexpected character in input: '\' (ASCII=92) state=1
Lösung:
Führe ein Update auf eine neuere PHP Version aus, mindestens 5.3.3 sollte es sein. Es kann sein, dass du hierzu deinen Hoster ansprechen musst, in manchen Fällen reicht auch ein einfaches Umschalten im Administrationsbereich des Hosters für den Webspace.

Konvertieren des Boards während ein fremder Style aktiv ist
Beim Update kommt es derzeit zu Problemen für Benutzer, wenn bei der Konvertierung ein anderer Style als Prosilver aktiv war. phpBB 3.0 Styles sind nicht zu phpBB 3.1 kompatibel und existieren je nach Updatemethode nach dem Update möglicherweise nicht einmal.

Mögliche Fehler die bei diesem Problem auftreten sind:

Code: Alles auswählen

SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_id = 1' at line 3 [1064]

Code: Alles auswählen

SQL ERROR [ mysql4 ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 [1064]
Lösung:
Das folgende Skript setzt den Standard Style des Boards auf Prosilver zurück, ebenso wie sämtliche Benutzer Styles.

Erzeuge eine Textdatei namens fix.php mit dem folgenden Inhalt:

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Default style ID
$sql = 'SELECT config_value FROM ' . CONFIG_TABLE . " WHERE config_name = 'default_style'";
$result = $db->sql_query($sql);
$default_style_id = (int) $db->sql_fetchfield('config_value');
$db->sql_freeresult($result);

// Default style name
$sql = 'SELECT style_name FROM ' . STYLES_TABLE . ' WHERE style_id = ' . $default_style_id;
$result = $db->sql_query($sql);
$default_style_name = $db->sql_fetchfield('style_name');
$db->sql_freeresult($result);

// Active styles
$sql = 'SELECT style_id, style_name, style_active FROM ' . STYLES_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $styles_list[] = $row;
}
$db->sql_freeresult($result);


echo 'Default style: ' . $default_style_name . ' (' . $default_style_id . ')<br />';

$exists = file_exists('./styles/' . $default_style_name . '/style.cfg');

if ($exists)
{
    echo 'Default style exists, no work to be done.';
    exit;
}

if (!file_exists('./styles/prosilver/style.cfg'))
{
    echo 'Prosilver does not exist. Please upload a copy of prosilver from the <a href="https://www.phpbb.com/downloads/">3.1.0 Full Package</a>.';
    exit;
}

$prosilver = array();
foreach ($styles_list as $style)
{
    if ($style['style_name'] == 'prosilver')
    {
        $prosilver = $style;
        break;
    }
}

// Install style if it doesn't exist
if (!sizeof($prosilver))
{
    $sql_ary = array(
        'style_name'        => 'prosilver',
        'style_copyright'    => '&copy; phpBB Group',
        'style_active'        => 1,
        'style_path'        => 'prosilver',
        'bbcode_bitfield'    => 'lNg=',
        'style_parent_id'    => '0',
        'style_parent_tree'    => '',
    );

    $sql = 'INSERT INTO ' . STYLES_TABLE . '
        ' . $db->sql_build_array('INSERT', $sql_ary);
    $db->sql_query($sql);

    $id = $db->sql_nextid();
    $prosilver = array(
        'style_name'    => 'prosilver',
        'style_id'        => $id,
        'style_active'    => 1,
    );

    echo 'Installed prosilver (' . $id . ').<br />';
}
else
{
    // Activate prosilver
    $sql = 'UPDATE ' . STYLES_TABLE . " SET style_active = 1 WHERE style_name = 'prosilver'";
    $db->sql_query($sql);
}

// Set it as the default style
$sql = 'UPDATE ' . CONFIG_TABLE . ' SET config_value = ' . $prosilver['style_id'] . " WHERE config_name = 'default_style'";
$db->sql_query($sql);
$cache->purge();
echo 'Set prosilver as the default style.<br />';

// Set all users' styles to prosilver
$sql = 'UPDATE ' . USERS_TABLE . ' SET user_style = ' . $prosilver['style_id'];
$db->sql_query($sql);
echo 'Updated user styles to prosilver.<br />';
echo 'Done.';
?>
Lade diese Datei in das Hauptverzeichnisses deines Boards (also im gleichen Verzeichnis, indem sich auch die config.php befindet) hoch und führe sie mit dem Browser aus, indem du sie aufrufst: http://example.org/meinforumpfad/fix.php.

Wenn die Datei ohne Fehler ausgeführt wird sollten die Probleme behoben sein. Vergiss nicht, die Datei nach dem Ausführen wieder zu löschen.
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11943
Registriert: 19.05.2005 21:45
Kontaktdaten:

Problem: Beim Updaten auf 3.1.5 tritt ein Konflikt auf

Beitrag von Crizzo »

Problem: Beim Updaten auf 3.1.5 tritt ein Konflikt auf

Beim Update von phpBB 3.1.4 auf phpBB 3.1.5 kann es zu einem Konflikt kommen, wenn der Automatische Updater verwendet wird, auch wenn keinerlei Änderungen am phpBB Core vorgenommen wurden. Dies passiert dann, wenn zuvor mit dem Automatischen Updater von phpBB 3.1.3 auf 3.1.4 aktualisiert wurde.

In diesem Fall gibt es in der Datei includes/acp/acp_prune.php in etwa in Zeile 510 folgende Stelle in der alten Version:

Code: Alles auswählen

    ((!empty($user_ids)) ? 'AND ' . $db->sql_in_set('ug.user_id', $user_ids) : '') . '
Sowie, ca. in Zeile 536:

Code: Alles auswählen

    ((!empty($user_ids)) ? 'AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . '
Diese beiden Stellen verursachen den Konflikt aufgrund von Veränderungen in den Leerzeichen, die vom Automatischen Updater zwischen 3.1.3 und 3.1.4 ignoriert wurden, aber beim Update von 3.1.4 auf 3.1.5 nochmals verändert wurden. Dies verursacht den Konflikt.

Wir empfehlen den Konflikt nicht zu ignorieren und nicht die Unterschiede zusammenzuführen, sondern Nicht zusammenführen — neue Datei verwenden auswählen (Option 3). Solltet ihr die Datei: includes/acp/acp_prune.php bearbeitet haben, müsst ihr allerdings Option 1 Unterschiede zusammenführen (Ignoriert bei Konflikt geänderten Code) auswählen.

Um den Konflikt beim Update von vorneherein zu vermeiden könnt ihr folgende Code-Änderungen manuell ausführen:

Öffne: includes/acp/acp_prune.php
Finde: (ca. Zeile 510)

Code: Alles auswählen

((!empty($user_ids)) ? 'AND ' . $db->sql_in_set('ug.user_id', $user_ids) : '') . '
Ersetze mit:

Code: Alles auswählen

((!empty($user_ids)) ? ' AND ' . $db->sql_in_set('ug.user_id', $user_ids) : '') . '
Finde: (ca. Zeile 536)

Code: Alles auswählen

((!empty($user_ids)) ? 'AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . '
Ersetze mit:

Code: Alles auswählen

((!empty($user_ids)) ? ' AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . '
Danach sollte das Update wie gewohnt funktionieren.

Das Problem wurde durch phpBB behoben und wird in Zukunft nicht mehr auftreten. Vielen Dank für euer Verständnis.
Gesperrt

Zurück zu „Support-Forum“