Simple Machines Community Forum

SMF Support => Converting to SMF => phpBB => Topic started by: numand on April 01, 2018, 12:19:50 PM

Title: phpbb3.2 to SMF 2.0.15
Post by: numand on April 01, 2018, 12:19:50 PM
Hi,

I am trying to convert a phpbb3.2 forum to a SMF 1.0.15 forum. When I run the convert script[1], it prints this error:


/usr/bin/php7.0 -f convert.php -- --path_to=/var/www/smf --path_from=/var/www/phpbb --db_pass=nnn --convert_script=phpbb3_to_smf.sql

Starting Conversion

* Converting ranks...
PHP Notice:  Undefined property: mysqli_result::$EOF in /var/www/smf/convert.php on line 2721
PHP Notice:  Undefined property: mysqli_result::$Fields in /var/www/smf/convert.php on line 2725
PHP Notice:  Trying to get property of non-object in /var/www/smf/convert.php on line 2726
PHP Fatal error:  Uncaught Error: Call to undefined method mysqli_result::MoveNext() in /var/www/smf/convert.php:2731
Stack trace:
#0 /var/www/smf/convert.php(1251): convert_fetch_assoc(Object(mysqli_result))
#1 /var/www/smf/convert.php(3038): doStep1()
#2 /var/www/smf/convert.php(31): cmdStep0()
#3 {main}
  thrown in /var/www/smf/convert.php on line 2731


Mentioned error lien (2721, 2725 and 2726) are in this function:

function convert_fetch_assoc($result)
{
global $smcFunc;

// Okay, the hardest is ADO (Windows only, by the way.)
if (!is_resource($result) && is_object($result))
{
if ($result->EOF) //-------> 2721
return false;

$row = array();
$fields = $result->Fields; //----------> 2725
for ($i = 0, $n = $fields->Count; $i < $n; $i++) //---------> 2726
{
$field = $fields[$i];
$row[$field->Name] = $field->Value;
}
$result->MoveNext(); //-------------> 2731

return $row;
}

$type = get_resource_type($result);
if ($type == 'odbc result')
return odbc_fetch_array($result);
else
return $smcFunc['db_fetch_assoc']($result);
}


But $result->MoveNext(); statement is not only in this function but in lots of functions.

Could you help me to solve this problem?

SMF Version: 2.0.15
phpbb Version: 3.2
PHP Version:

php --version
PHP 7.0.28-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.28-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies


MariaDB Version:

mysql --version
mysql  Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using  EditLine wrapper


Operation System: Ubuntu 16.04.4
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: digger on April 01, 2018, 12:39:58 PM
Try to conver to SMF 1.0.13.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: numand on April 01, 2018, 12:52:12 PM
@digger,

Are you suggesting that first install SMF 1.0.13 and then run convert script?
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: digger on April 01, 2018, 12:53:22 PM
Quote from: numand on April 01, 2018, 12:52:12 PM
@digger,

Are you suggesting that first install SMF 1.0.13 and then run convert script?
Yes
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: Illori on April 01, 2018, 02:06:40 PM
SMF 1.0 or SMF 1.1.* does not support php 7.* you might not have a lot of luck getting it to work.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: digger on April 01, 2018, 02:08:36 PM
Quote from: numand on April 01, 2018, 12:52:12 PM
@digger,

Are you suggesting that first install SMF 1.0.13 and then run convert script?
I mean 2.0.13. Sorry.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: numand on April 06, 2018, 03:11:41 PM
Quote from: digger on April 01, 2018, 02:08:36 PM
Quote from: numand on April 01, 2018, 12:52:12 PM
@digger,

Are you suggesting that first install SMF 1.0.13 and then run convert script?
I mean 2.0.13. Sorry.

Thank you for advise @digger but I got the same error. This is from SMF 2.0.13:

/usr/bin/php7.0 -f convert.php -- --path_to=/var/www/smf --path_from=/var/www/phpbb --db_pass=nnn --convert_script=phpbb3_to_smf.sql

Starting Conversion

* Converting ranks...
PHP Notice:  Undefined property: mysqli_result::$EOF in /var/www/smf/convert.php on line 2721
PHP Notice:  Undefined property: mysqli_result::$Fields in /var/www/smf/convert.php on line 2725
PHP Notice:  Trying to get property of non-object in /var/www/smf/convert.php on line 2726
PHP Fatal error:  Uncaught Error: Call to undefined method mysqli_result::MoveNext() in /var/www/smf/convert.php:2731
Stack trace:
#0 /var/www/smf/convert.php(1251): convert_fetch_assoc(Object(mysqli_result))
#1 /var/www/smf/convert.php(3038): doStep1()
#2 /var/www/smf/convert.php(31): cmdStep0()
#3 {main}
  thrown in /var/www/smf/convert.php on line 2731
[code]
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: digger on April 06, 2018, 03:16:08 PM
Did you try to downgrade php version?
Some time ago I converted old phpBB forum and encountered the same error, but successfully converted to SMF 2.0.13 with php 5.4 finally.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: numand on April 06, 2018, 03:40:57 PM
@digger,

No, I did not try to downgrade PHP version to 5.4. According to this[1] answer, the minimum version of PHP that can be installed is 5.6. I will try this in my local computer in order to not to mess server.

[1] https://askubuntu.com/questions/109404/how-do-i-install-different-upgrade-or-downgrade-php-version-in-still-supported
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: digger on April 06, 2018, 03:58:03 PM
Quote from: numand on April 06, 2018, 03:40:57 PM
@digger,

No, I did not try to downgrade PHP version to 5.4. According to this[1] answer, the minimum version of PHP that can be installed is 5.6. I will try this in my local computer in order to not to mess server.

[1] https://askubuntu.com/questions/109404/how-do-i-install-different-upgrade-or-downgrade-php-version-in-still-supported
You can try with php 5.6. I think this converter needs php version with old mysql extension support and smf version without php 7.0 support.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: numand on April 07, 2018, 09:30:46 AM
@digger,

As you said, PHP 5.6 with old MySQL/MariaDB extension partially works. Even so the converter did not do its job completely.

This is what I did so far:
1. Comment out functions that contains SQL_MAX_JOIN_SIZE in convert.php

diff -u original_convert.php changed_convert.php
// Attempt to allow big selects, only for mysql so far though.
- if ($smcFunc['db_title'] == 'MySQL')
- {
- $results = $smcFunc['db_query']('', "SELECT @@SQL_BIG_SELECTS, @@SQL_MAX_JOIN_SIZE", 'security_override');
- list($big_selects, $sql_max_join) = $smcFunc['db_fetch_row']($results);
+ //if ($smcFunc['db_title'] == 'MySQL')
+ //{
+ // $results = $smcFunc['db_query']('', "SELECT @@SQL_BIG_SELECTS, @@SQL_MAX_JOIN_SIZE", 'security_override');
+ // list($big_selects, $sql_max_join) = $smcFunc['db_fetch_row']($results);

// Only waste a query if its worth it.
- if (empty($big_selects) || ($big_selects != 1 && $big_selects != '1'))
- $smcFunc['db_query']('', "SET @@SQL_BIG_SELECTS = 1", 'security_override');
+ // if (empty($big_selects) || ($big_selects != 1 && $big_selects != '1'))
+ // $smcFunc['db_query']('', "SET @@SQL_BIG_SELECTS = 1", 'security_override');

// Lets set MAX_JOIN_SIZE to something we should
- if (empty($sql_max_join) || ($sql_max_join == '18446744073709551615' && $sql_max_join == '18446744073709551615'))
- $smcFunc['db_query']('', "SET @@SQL_MAX_JOIN_SIZE = 18446744073709551615", 'security_override');
- }
+ // if (empty($sql_max_join) || ($sql_max_join == '18446744073709551615' && $sql_max_join == '18446744073709551615'))
+ // $smcFunc['db_query']('', "SET @@SQL_MAX_JOIN_SIZE = 18446744073709551615", 'security_override');
+ //}

// Attempt to allow big selects, only for mysql so far though.
- if ($smcFunc['db_title'] == 'MySQL' && (trim($db_errno) == 1104 || strpos($db_error, 'use SET SQL_BIG_SELECTS=1') !== false))
- {
- $results = $smcFunc['db_query']('', "SELECT @@SQL_BIG_SELECTS, @SQL_MAX_JOIN_SIZE", 'security_override');
- list($big_selects, $sql_max_join) = $smcFunc['db_fetch_row']($results);
+ //if ($smcFunc['db_title'] == 'MySQL' && (trim($db_errno) == 1104 || strpos($db_error, 'use SET SQL_BIG_SELECTS=1') !== false))
+ //{
+ // $results = $smcFunc['db_query']('', "SELECT @@SQL_BIG_SELECTS, @SQL_MAX_JOIN_SIZE", 'security_override');
+ // list($big_selects, $sql_max_join) = $smcFunc['db_fetch_row']($results);

// Only waste a query if its worth it.
- if (empty($big_selects) || ($big_selects != 1 && $big_selects != '1'))
- $smcFunc['db_query']('', "SET @@SQL_BIG_SELECTS = 1", 'security_override');
+ // if (empty($big_selects) || ($big_selects != 1 && $big_selects != '1'))
+ // $smcFunc['db_query']('', "SET @@SQL_BIG_SELECTS = 1", 'security_override');

// Lets set MAX_JOIN_SIZE to something we should
- if (empty($sql_max_join) || ($sql_max_join == '18446744073709551615' && sql_max_join == '18446744073709551615'))
- $smcFunc['db_query']('', "SET @@SQL_MAX_JOIN_SIZE = 18446744073709551615", 'security_override');
+ // if (empty($sql_max_join) || ($sql_max_join == '18446744073709551615' && sql_max_join == '18446744073709551615'))
+ // $smcFunc['db_query']('', "SET @@SQL_MAX_JOIN_SIZE = 18446744073709551615", 'security_override');

// Try again.
- $result = $smcFunc['db_query']('', $string, 'security_override');
+ // $result = $smcFunc['db_query']('', $string, 'security_override');

- if ($result !== false)
- return $result;
- }
+ // if ($result !== false)
+ // return $result;
+ //}


2. Remove some parameters(?) form phpbb3_to_smf.sql file

diff -u original_phpbb3_to_smf.sql changed_phpbb3_to_smf.sql
- SUBSTRING(u.user_from, 1, 255) AS location,
+ '' AS location,
- SUBSTRING(u.user_msnm, 1, 255) AS msn,
- SUBSTRING(u.user_aim, 1, 16) AS aim,
- SUBSTRING(u.user_icq, 1, 255) AS icq,
- SUBSTRING(u.user_yim, 1, 32) AS yim,
- SUBSTRING(u.user_website, 1, 255) AS website_title,
- SUBSTRING(u.user_website, 1, 255) AS website_url,
+ '' AS msn,
+ '' AS aim,
+ '' AS icq,
+ '' AS yim,
+ '' AS website_title,
+ '' AS website_url,
- f.forum_id AS id_board, CASE WHEN f.parent_id = c.temp_id THEN 0 ELSE f.parent_id END AS id_parent, f.left_id AS board_order, f.forum_posts AS num_posts,
+ f.forum_id AS id_board, CASE WHEN f.parent_id = c.temp_id THEN 0 ELSE f.parent_id END AS id_parent, f.left_id AS board_order, '' AS num_posts,
- SUBSTRING(f.forum_desc, 1, 65534) AS description, f.forum_topics AS num_topics, f.forum_last_post_id AS id_last_msg
+ SUBSTRING(f.forum_desc, 1, 65534) AS description, '' AS num_topics, f.forum_last_post_id AS id_last_msg


u.user_{msnm, aim, icq, yim, website}, u.user_from is not important but f.forum_posts and f.forum_topics are important datas. These are errors I get if I do not change phpbb3_to_smf.sql file:

Unsuccessful! Database error message:
Unknown column 'u.user_from' in 'field list'

Unsuccessful! Database error message:
Unknown column 'u.user_msnm' in 'field list' # and friends

* Converting boards...
Unsuccessful! Database error message:
Unknown column 'f.forum_posts' in 'field list

* Converting boards...
Unsuccessful! Database error message:
Unknown column 'f.forum_topics' in 'field list'


And this is whre I am stuck:

Starting Conversion

* Converting ranks...
Successful.

* Converting groups...
Successful.

* Converting members...
Successful.

* Converting additional member groups...
Successful.

* Preparing for categories conversion...
Successful.

* Converting categories...
Successful.

* Converting boards...
Wrong value type sent to the database. Integer expected. (num_posts)
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: numand on April 07, 2018, 09:41:11 AM
OK, I changed phpbb3_to_smf.sql file according to this[1] post but instead of changing t.topic_replies to t.topic_posts, I changed to t.topic_posts_approved. And converting phpbb3 to SMF ended successfully!

Thank you for your guidance @digger!

[1] https://www.simplemachines.org/community/index.php?topic=557174.msg3948846#msg3948846
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: vbgamer45 on April 07, 2018, 09:49:53 AM
Can you post your final file here.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: numand on April 07, 2018, 10:09:36 AM
@vbgamer45,

I attached both convert.php and phpbb3_to_smf.sql files.
My working environment:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial


php -v
PHP 5.6.35-1+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies


dpkg -l | grep php5.6
ii  libapache2-mod-php5.6                      5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php5.6                                     5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    all          server-side, HTML-embedded scripting language (metapackage)
ii  php5.6-cli                                 5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        command-line interpreter for the PHP scripting language
ii  php5.6-common                              5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        documentation, examples and common module for PHP
ii  php5.6-fpm                                 5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        server-side, HTML-embedded scripting language (FPM-CGI binary)
ii  php5.6-json                                5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        JSON module for PHP
ii  php5.6-mysql                               5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        MySQL module for PHP
ii  php5.6-opcache                             5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        Zend OpCache module for PHP
ii  php5.6-readline                            5.6.35-1+ubuntu16.04.1+deb.sury.org+1                    amd64        readline module for PHP


mysql --version
mysql  Ver 15.1 Distrib 10.0.34-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2


nginx -v
nginx version: nginx/1.10.3 (Ubuntu)


server {
listen 80;
listen [::]:80;

root /var/www/smf;

index index.php index.html index.htm;

server_name _;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
}
}
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: vbgamer45 on April 07, 2018, 09:41:36 PM
thanks
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: AOKP on July 07, 2018, 06:51:07 PM
For some reason I cannot get this running with PHP5.6.
Error is the same as in the first post.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: GigaWatt on July 07, 2018, 06:59:46 PM
Did you use the attached files from this (https://www.simplemachines.org/community/index.php?topic=559677.msg3968441#msg3968441) post?
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: CrimeS on May 25, 2020, 04:28:51 PM
Hello, while converting from phpBB3.2 -> SMF 2.0.19 I noticed that the topics have lots of html in their content:
<B><s>[b]</s><I><s>[i]</s><U><s>[u]</s>Biografia:<e>[/u]</e></U><e>[/i]</e></I><e>[/b]</e></B><br/>

Is this an artefact caused by conversion, or should I be able to get around this?
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: vbgamer45 on May 25, 2020, 07:32:04 PM
It's a known issue at this point. Still working on a fix.
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: CrimeS on May 26, 2020, 02:32:56 PM
Thanks, I thought so!
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: vbgamer45 on May 26, 2020, 02:34:59 PM
Yeah, I tried last night using SMF's built in function to convert html to bcc haven't got it to work yet. Needs tweaks to get it to work with the convertor might be a slow process
Title: Re: phpbb3.2 to SMF 2.0.15
Post by: Massl on May 27, 2020, 09:36:41 AM
I tried to convert phpbb to mybb, because the mybb to smf converter works well, but mybb converter also doesn't work.

Quote from: vbgamer45 on May 25, 2020, 07:32:04 PM
Still working on a fix.

Thanks  :)