Vastloper conversie smf>phpbb

Hulp nodig bij je installatie of kom je ergens niet uit?
Probeer phpBB3.2! Problemen lossen we samen met je op.
Plaats reactie
Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Vastloper conversie smf>phpbb

Bericht door Blinkel » 21 nov 2017, 22:40

  • Wat is het probleem?
    Ik heb een groot forum die oorspronkelijk op een VBulletin stond. Ik wil overstappen naar het Phpbb script en de eenvoudigste manier was om eerst een conversie te doen naar SMF en vanuit daar naar Phpbb.
    Nu heb ik het werkend gekregen, maar het loop vast op iets wat te maken zou hebben met dubbele usernames, iets wat niet zou kunnen eigenlijk.
    De melding die ik krijg is de volgende:
    Fatal error: Call to a member function error() on null in /home/xxxxx/public_html/forums/install/convertors/functions_smf20.php on line 747 The error is in this file: functions_smf20.php on line 747

    Dan kijk ik in de betreffende file en dan is daar de volgende regel:
    $convert->p_master->error('<span style="color:red">' . $user->lang['COLLIDING_USERNAMES_FOUND'] . '</span></b><br /><br />' . $list . '<b>', __LINE__, __FILE__);

    Op zich duidelijk, maar hoe los ik dit op. Welke gebruikersnamen geven dit probleem?

    Wanneer ontstond het probleem?
    Op het moment van de conversie

    Adres van je forum:
    http://lotgenotenforum.nl (de smf) /forum (phpbb)

    Extensies op je forum:
    Geen

    Huidige stijl:
    Standaard

    phpBB versie:
    Laatste versie

    Waar is je forum gehost:
    Neostrada

    Heb je onlangs iets veranderd aan je forum?
    Nee, schoon en leeg forum

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 18 dec 2017, 14:35

Niemand?
Is er misschien een mogelijkheid om deze stap over te slaan of te verwijderen uit de database?

Gebruikersavatar
El torro
Berichten: 4177
Lid geworden op: 02 sep 2014, 21:28
Locatie: In het zonnige zuiden
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door El torro » 18 dec 2017, 16:17


Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Ger » 19 dec 2017, 11:26

2 dingen.
  1. Er zijn verschillende gebruikers waarvan de username_clean waarde gelijk is. Dat is de gebruikersnaam met alle speciale karakters genormaliseerd. De convertor maakt normaliter een tabel aan die phpbb_userconv heet waarin alle gebruikers van je oude forum in staan met daarin ook een kolom username_clean. Vervolgens wordt deze query gedraaid:

    Code: Selecteer alles

    SELECT username_clean
    	FROM phpbb_userconv
    	GROUP BY username_clean
    	HAVING COUNT(user_id) > 1
    Als dat resultaat oplevert betekent dit dat er een collision is en krijg je de foutmelding. Je kunt dus deze lijst opvragen via je database beheerprogamma (phpMyAdmin, MySQL Workbench, etc) en dan de gebruikersnamen aanpassen of gebruikers verwijderen.
  2. Blijkbaar is de convertor die je gebruikt niet helemaal in orde. Althans, daar lijkt het op: de constructie convert->p_master->error() komt vaak terug. Kun je aangeven welke versie van phpBB je gebruikt voor deze conversiestap en welke specifieke convertor (link) voor SMF je gebruikt? Ik heb haast het vermoeden dat daar een mismatch is.

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 19 dec 2017, 22:00

@ El Torro: Ja, die was ik al tegengekomen, maar die gaat er vanuit dat de users in een phpbb database zitten en ik moet ze van de smf afhalen.

@ Ger:
Dit is de convertor die ik gebruik: https://github.com/juju2143/smf2-phpbb-convertor
Deze was de enige die geschikt was voor smf 2.0.1 naar phpbb 3.2.1
Ik heb ook een andere geprobeerd, maar daar was de mappenstructuur niet gelijk met de phpbb. En op phpbb.com wordt je niet veel wijzer welke wel of niet werkt. De enige officiele convertor is van een smf 1.1 en daar kon ik niet van Vbulletin naar smf converteren.

Ik weet niet om welke gebruikersnamen het gaat, die melding krijg ik helaas niet. En aangezien op het oude forum geen gelijke namen geregistreerd konden worden, moet er iets anders zijn. Misschien met leestekens bv klaas en klaass of klaas1. En met meer dan 12 duizend gebruikersnamen is het nogal wat om dat uit te pluizen.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Ger » 20 dec 2017, 09:20

Het lijkt erop dat p_master niet bekend is. Kun je eens kijken wat er gebeurd als je hier eens het volgende plaatst?

Code: Selecteer alles

var_dump($convert);
exit('<p>einde test</p>');

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 20 dec 2017, 16:31

Zucht, het zal eens niet zo zijn... Ik loop nu ineens tegen een lege pagina aan na het starten van de conversie. Eerder kwam ik in ieder geval nog tot de foutmelding over de gebruikers. Ik heb wat ik anders heb gedaan weer terug gezet, maar helaas.
Dan maar even een clean install doen inclusief de database, nope.
Het ligt in ieder geval niet aan de executing time etc, die staan zelfs erg hoog. Ik ga nu maar eens kijken waar het hem in zit, foutlog meld niets.

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 20 dec 2017, 22:18

Ok, daar waren we weer, foutje opgelost en op naar de volgende.
Nadat alles in orde is bevonden door de convertor, klik ik op "Conversion in progress". Daar heb ik de laatste 2 uur zitten staren naar het voorbij komen van codering die mij niet bekend is en had ook het idee dat het zich herhaalde, tot de pagina vastloopt.

Code: Selecteer alles

["destNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["value":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> object(Symfony\Component\DependencyInjection\Reference)#4789 (3) { ["id":"Symfony\Component\DependencyInjection\Reference":private]=> string(9) "dbal.conn" ["invalidBehavior":"Symfony\Component\DependencyInjection\Reference":private]=> int(1) ["strict":"Symfony\Component\DependencyInjection\Reference":private]=> bool(true) } } [1]=> object(Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge)#3609 (3) { ["sourceNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["destNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["value":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> object(Symfony\Component\DependencyInjection\Reference)#4790 (3) { ["id":"Symfony\Component\DependencyInjection\Reference":private]=> string(8) "language" ["invalidBehavior":"Symfony\Component\DependencyInjection\Reference":private]=> int(1) ["strict":"Symfony\Component\DependencyInjection\Reference":private]=> bool(true) } } [2]=> object(Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge)#3602 (3) { ["sourceNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["destNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["value":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> object(Symfony\Component\DependencyInjection\Reference)#4791 (3) { ["id":"Symfony\Component\DependencyInjection\Reference":private]=> string(4) "user" ["invalidBehavior":"Symfony\Component\DependencyInjection\Reference":private]=> int(1) ["strict":"Symfony\Component\DependencyInjection\Reference":private]=> bool(true) } } [3]=> object(Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge)#3629 (3) { ["sourceNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["destNode":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> *RECURSION* ["value":"Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge":private]=> object(Symfony\Component\DependencyInjection\Reference)#4792 (3) { ["id":"Symfony\Component\DependencyInjection\Reference":private]=> string(4) "auth" ["invalidBehavior":"Symfony\Component\DependencyInjection\Reference":private]=> int(1) ["strict":"Symfony\Component\DependencyInjection\Reference":private]=> bool(true) } } [4]=> *RECURSION* [5]=> 
De conversie van VBulletin naar smf was heel snel gedaan, dus lijkt het mij dat er hier toch iets niet goed gaat.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Ger » 21 dec 2017, 09:21

Tsja, daar kan ik je ook niet direct mee helpen.

Even terug naar de basis: welke versie van vBulletin heb je nu? Wellicht is er een convertor om direct van vB naar phpBB 3.0 of 3.1 te gaan, en dan vervolgens gewoon phpBB updaten. Zo doe ik dat ook met een (gigantisch) Invision forum.

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 23 dec 2017, 21:27

Ik heb al erg veel bekeken en gelezen en ben niet een geschikte convertor tegengekomen om van Vb4 naar een phpbb om te zetten. Wat ik nog niet geprobeerd heb is te downgraden van de Vb4 naar een versie die wel rechtstreeks naar phpbb kan.
Mocht er een vordering zijn, plaats ik dat hier, je weet nooit of een ander er ook wat aan zal hebben.

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 24 dec 2017, 16:41

En daar was ik weer en weer een stapje verder,
De conversie is bijna gelukt, alleen alle leden, inclusief de admin, zijn nergens te bekennen. Alle topics en berichten zijn succesvol overgezet, wat een heerlijk gezicht.

Wat heb ik nu gedaan? Nou, gewoon eens wat proberen met het verwijderen van stukjes codering uit de convertorfiles. De stukjes over de coliding users. De hele conversie ging goed, ik kreeg wel meldingen van fouten, maar ik heb de conversie toch doorgezet. Het ergste wat je kan gebeuren is dat je weer even een clean install moet doen.

Maar nu die users.... En ik als admin, ook wel handig als ik in kan loggen.
Is er een manier om die leden alsnog erop te krijgen? En hoe wordt ik weer admin?

Jim
Berichten: 3900
Lid geworden op: 21 feb 2007, 14:53
Locatie: Groningen
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Jim » 25 dec 2017, 12:32

Het is wel wat lastig om te helpen als we niet kunnen zien wat je veranderd hebt.
Zou je misschien kunnen proberen om dat te laten zien of een misschien ook een link naar je geconverteerde forum te plaatsen?
Jim Mossing Holsteyn - Beheerder
Documentatie | Algemene voorwaarden | Wiki

Heb je suggesties over het verbeteren van phpBB.nl of andere site-gerelateerde vragen? Stuur me een PB!

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 25 dec 2017, 14:47

Ja, dat schijnt wel handig te zijn. Sorry, maar hierbij alsnog.

Uit functions_smf20.php (onderdeel van de convertor) heb ik het gehele gedeelte verwijderd wat over de colliding users gaat.

Code: Selecteer alles

/**
 * Checks whether there are any usernames on the old board that would map to the same
 * username_clean on phpBB3. Prints out a list if any exist and exits.
 */
function smf_check_username_collisions()
{
    global $db, $src_db, $convert, $table_prefix, $user, $lang;
    var_dump($convert);
    exit('<p>einde test</p>');
    // now find the clean version of the usernames that collide
    $sql = 'SELECT username_clean
		FROM ' . USERCONV_TABLE .'
		GROUP BY username_clean
		HAVING COUNT(user_id) > 1';
    $result = $db->sql_query($sql);

    $colliding_names = array();
    while ($row = $db->sql_fetchrow($result))
    {
        $colliding_names[] = $row['username_clean'];
    }
    $db->sql_freeresult($result);

    // there was at least one collision, the admin will have to solve it before conversion can continue
    if (sizeof($colliding_names))
    {
        $sql = 'SELECT user_id, username_clean
			FROM ' . USERCONV_TABLE . '
			WHERE ' . $db->sql_in_set('username_clean', $colliding_names);
        $result = $db->sql_query($sql);
        unset($colliding_names);

        $colliding_user_ids = array();
        while ($row = $db->sql_fetchrow($result))
        {
            $colliding_user_ids[(int) $row['user_id']] = $row['username_clean'];
        }
        $db->sql_freeresult($result);

        $sql = 'SELECT member_name, id_member, posts
			FROM ' . $convert->src_table_prefix . 'members
			WHERE ' . $src_db->sql_in_set('id_member', array_keys($colliding_user_ids));
        $result = $src_db->sql_query($sql);

        $colliding_users = array();
        while ($row = $db->sql_fetchrow($result))
        {
            $row['user_id'] = (int) $row['id_member'];
            if (isset($colliding_user_ids[$row['user_id']]))
            {
                $colliding_users[$colliding_user_ids[$row['user_id']]][] = $row;
            }
        }
        $db->sql_freeresult($result);
        unset($colliding_user_ids);

        $list = '';
        foreach ($colliding_users as $username_clean => $users)
        {
            $list .= sprintf($user->lang['COLLIDING_CLEAN_USERNAME'], $username_clean) . "<br />\n";
            foreach ($users as $i => $row)
            {
                $list .= sprintf($user->lang['COLLIDING_USER'], $row['user_id'], smf_set_encoding($row['username']), $row['user_posts']) . "<br />\n";
            }
        }

        $lang['INST_ERR_FATAL'] = $user->lang['CONV_ERR_FATAL'];
        $convert->p_master->error('<span style="color:red">' . $user->lang['COLLIDING_USERNAMES_FOUND'] . '</span></b><br /><br />' . $list . '<b>', __LINE__, __FILE__);
    }

    $drop_sql = 'DROP TABLE ' . USERCONV_TABLE;
    $db->sql_query($drop_sql);
}
Na de conversie weer gestart te hebben, kreeg ik een foutmelding over een regel in convert_smf20.php op regel 398.
Deze regel ging ook over colliding users en heb ik ook verwijderd.

Code: Selecteer alles

'execute_first'	=> 'smf_check_username_collisions();', 
Hierna kon ik dus de conversie verder laten gaan. De enige foutmeldingen die ik kreeg ging over de avatars, maar dat is een bekend probleem met een conversie.
Het forum in kwestie: http://www.lotgenotenforum.nl/forums/

Jim
Berichten: 3900
Lid geworden op: 21 feb 2007, 14:53
Locatie: Groningen
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Jim » 25 dec 2017, 20:24

Het lijkt er voor mij op alsof dat niet de enige problemen zijn. Ik kan namelijk ook geen enkel bericht lezen.

Heb je al geprobeerd op een issue te openen de convertor auteur? Op een vergelijkbare vraag reageerde hij binnen een paar dagen. Ik denk dat simpelweg functies uit de convertor slopen niet de juiste manier is omdat er alleen maar meer foutmelding vandaan lijken te komen waar ik zo snel ook de oplossing niet voor zie, helaas.
Jim Mossing Holsteyn - Beheerder
Documentatie | Algemene voorwaarden | Wiki

Heb je suggesties over het verbeteren van phpBB.nl of andere site-gerelateerde vragen? Stuur me een PB!

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 29 dec 2017, 21:07

Mmm, ik zie inderdaad dat sommige berichten een databasefout geven. Maar ik kan wel berichten lezen, hoeveel dat er zijn weet ik niet. Het klopt gewoon niet, jammer maar helaas...

Toch wil ik jullie enorm bedanken voor het meekijken en denken. Het heeft mij wel geholpen om zaken uit te sluiten en heb weer wat geleerd van het 1 en ander.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Ger » 03 jan 2018, 10:15

Blinkel schreef:
23 dec 2017, 21:27
Ik heb al erg veel bekeken en gelezen en ben niet een geschikte convertor tegengekomen om van Vb4 naar een phpbb om te zetten. Wat ik nog niet geprobeerd heb is te downgraden van de Vb4 naar een versie die wel rechtstreeks naar phpbb kan.
Mocht er een vordering zijn, plaats ik dat hier, je weet nooit of een ander er ook wat aan zal hebben.
Het duurde even voordat ik de tijd had, maar bij deze:
vBulletin 4.0.x to phpBB 3.0.x

Vanuit phpBB 3.0 kun je heel eenvoudig (en eindeloos vaak getest) naar 3.2.x

Blinkel
Berichten: 16
Lid geworden op: 21 nov 2017, 22:10

Re: Vastloper conversie smf>phpbb

Bericht door Blinkel » 09 jan 2018, 16:06

Ook hier duurde het weer even, maar ik ben weer aan de slag gegaan.
De convertor die je noemde heb ik eerder al eens geprobeerd, ook al was mijn versie van VBulletin hoger.
Dit werkte niet, er was wel een optie om hem dan te downgraden. Echter waren mijn files zo vervuild door achtergebleven codes van mods etc, dat dit een en al fouten gaf.

Maar er is ook goed nieuws. Ik heb de phpBB verwijderd en een oude geïnstalleerd, namelijk 3.0.11. Dat idee pikte ik op uit het topic waarvan jij mij de link gaf. Vanaf daar heb ik de conversie nogmaals gestart en met succes! (tenminste, ik kwam nog geen fout tegen)
Daarna de update gedaan naar phpBB 3.2 met deze pagina erbij: https://www.phpbb.com/support/docs/en/3 ... /upgrade3/

Enige wat ik fout deed was dat alle files werden overschreven, ik kreeg die keuze van het ftp-programma niet. Dus ook config.php. En dat geheel onderaan vermeld, niet erg handig na alle stappen al te hebben gedaan.
Nu weet ik niet welke gevolgen dit heeft, ik merk er vooralsnog niets van.

Maar tot zover werkt het en kan ik weer verder.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: Vastloper conversie smf>phpbb

Bericht door Ger » 09 jan 2018, 16:29

Als je config.php overschreven hebt zou dat betekenen dat je forum niet werkt, dus als jij zegt dat je er niets van merkt heb je óf het bestand niet overschreven óf je forum nog niet geopend. :P

De andere genoemde mappen bevatten respectievelijk je avatars, bijlagen en backups (plus nog wat ander spul waar je in dit proces geen last van hebt).

Plaats reactie