가져오기 이후에 ./launcher rebuild app을 실행했습니다. 가져오기는 전체적으로 성공적으로 수행된 것으로 보이지만, phpbb에서 사용하던 비밀번호로 로그인할 수 없습니다. 가져오기 과정에서 관련 오류 메시지는 발견하지 못했으며, 비밀번호 길이가 20자이므로 최소 길이 제한을 충족해야 합니다.
이 문제를 해결하기 위해 무엇을 확인해야 할까요?
추가 정보: 데이터베이스의 user_custom_fields 테이블에 import_pass 항목이 있으며, 이는 phpbb 데이터베이스에 있던 비밀번호 해시와 일치합니다. 따라서 그 부분은 정상적으로 작동한 것으로 보입니다.
수정: 아, 이제 원인을 파악했습니다. phpbb에서 LDAP 인증으로 전환한 사실을 완전히 잊고 있었습니다… 가져온 비밀번호들은 전혀 문제없었지만, 15년 전 것이었네요! 이제 LDAP에서 비밀번호 해시를 추출하기 위해 무언가를 만들어야 할 것 같습니다…
처음에는 phpbb 3.0.12 버전이 너무 오래되어서 그런 줄 알았지만, phpBB를 3.0.14로 업그레이드하고 Discourse와 uploads 폴더를 정리한 후 다시 가져오기를 시도해 보았습니다. 결과는 동일했습니다.
테스트 서버에서 phpbb 버전을 3.2.0으로 업그레이드(모드(mods)를 정리하기 위해 지원 툴킷을 실행한 후)하고 다시 시도해 보았지만, 역시 실패했습니다.
데이터베이스에 대해 더 깊이 조사하기 전에, 이 스크립트가 모든 사람에게 정상적으로 작동하는지 확인하고 싶었습니다.
설정 파일에서 실수를 했다고 생각하지는 않지만, 새로운 관점에서 살펴봐 주시면 도움이 될 수도 있을 것 같습니다.
# This is an example settings file for the phpBB3 importer.
database:
type: MySQL # currently only MySQL is supported
host: localhost
port: 3306
username: root
password:
schema: phpbb
table_prefix: phpbb_ # Change this, if your forum is using a different prefix. Usually all table names start with phpbb_
batch_size: 1000 # Don't change this unless you know what you're doing. The default (1000) should work just fine.
import:
# Set this if you import multiple phpBB forums into a single Discourse forum.
#
# For example, when importing multiple sites, prefix all imported IDs
# with 'first' to avoid conflicts. Subsequent import runs must have a
# different 'site_name'.
#
# site_name: first
#
site_name:
# Create new categories
#
# For example, to create a parent category and a subcategory.
#
# new_categories:
# - forum_id: foo
# name: Foo Category
# - forum_id: bar
# name: Bar Category
# parent_id: foo
#
new_categories: []
# Category mappings
#
# For example, topics from phpBB category 1 and 2 will be imported
# in the new "Foo Category" category, topics from phpBB category 3
# will be imported in subcategory "Bar category", topics from phpBB
# category 4 will be merged into category 5 and category 6 will be
# skipped.
#
# category_mappings:
# 1: foo
# 2: foo
# 3: bar
# 4: 5
# 6: SKIP
#
category_mappings: {}
# Tag mappings
#
# For example, imported topics from phpBB category 1 will be tagged
# with 'first-category', etc.
#
# tag_mappings:
# 1:
# - first-category
# 2:
# - second-category
# 3:
# - third-category
#
tag_mappings:
# Rank to trust level mapping
#
# Map phpBB 3.x rank levels to trust level
# Users with rank at least 3000 will have TL3, etc.
#
# rank_mapping:
# trust_level_1: 200
# trust_level_2: 1000
# trust_level_3: 3000
#
rank_mapping:
# WARNING: Do not activate this option unless you know what you are doing.
# It will probably break the BBCode to Markdown conversion and slows down your import.
use_bbcode_to_md: false
# This is the path to the root directory of your current phpBB installation (or a copy of it).
# The importer expects to find the /files and /images directories within the base directory.
# You need to change this to something like /var/www/phpbb if you are not using the Docker based importer.
# This is only needed if you want to import avatars, attachments or custom smilies.
phpbb_base_dir: /shared/import/data
site_prefix:
# this is needed for rewriting internal links in posts
original: ***.com # without http(s)://
new: https://****.org # with http:// or https://
# Enable this, if you want to redirect old forum links to the the new locations.
permalinks:
categories: true # redirects /viewforum.php?f=1 to /c/category-name
topics: true # redirects /viewtopic.php?f=6&t=43 to /t/topic-name/81
posts: false # redirects /viewtopic.php?p=2455#p2455 to /t/topic-name/81/4
# Append a prefix to each type of link, e.g. 'forum' to redirect /forum/viewtopic.php?f=6&t=43 to /t/topic-name/81
# Leave it empty if your forum wasn't installed in a subfolder.
prefix:
avatars:
uploaded: true # import uploaded avatars
gallery: false # import the predefined avatars phpBB offers
remote: false # WARNING: This can considerably slow down your import. It will try to download remote avatars.
# When true: Anonymous users are imported as suspended users. They can't login and have no email address.
# When false: The system user will be used for all anonymous users.
anonymous_users: true
# Enable this, if you want import password hashes in order to use the "migratepassword" plugin.
# This will allow users to login with their current password.
# The plugin is available at: https://github.com/discoursehosting/discourse-migratepassword
passwords: false
# By default all the following things get imported. You can disable them by setting them to false.
bookmarks: true
attachments: true
private_messages: false
polls: false
# When true: each imported user will have the original username from phpBB as its name
# When false: the name of each imported user will be blank unless the username was changed during import
username_as_name: false
# Map Emojis to smilies used in phpBB. Most of the default smilies already have a mapping, but you can override
# the mappings here, if you don't like some of them.
# The mapping syntax is: emoji_name: 'smiley_in_phpbb'
# Or map multiple smilies to one Emoji: emoji_name: ['smiley1', 'smiley2']
emojis:
# here are two example mappings...
smiley: [':D', ':-D', ':grin:']
heart: ':love:'
phpBB에도 이 문제가 적용되는 것으로 보입니다. v3.2.x부터 v3.3.3까지의 덤프를 가져오려고 시도하고 있는데, 부모 게시글이 누락된 경우가 수천 건에 달합니다. 여러 번 실행하고 여러 시점의 버전 백업을 순차적으로 사용해도 마찬가지입니다. 디버깅을 단순화하기 위해 스크립트가 메시지 ID에 해당하는 기존 포럼의 URL을 출력하도록 하면 참고 확인이 용이할 것입니다. (… viewtopic.php?p=57912)
실제로 이참에, 분석을 위해 오류 메시지와 함께 실패한 임포트 행을 덤프 파일에 기록해서 공유하는 건 어떨까… 그냥 생각인데…
적어도 한 가지 경우는 viewtopic.php?f=3&t=1472 토픽이 있는데, 첫 번째 게시물인 viewtopic.php?p=145185가 삭제/제거/등으로 인해 현재 해당 토픽의 첫 번째 게시물이 "답글"인 viewtopic.php?p=145186이 되는 경우입니다.
분명함을 위해, 상위 토픽이 덤프에 실제로 존재하지 않는 건지, 아니면 재구성에 아직 임포트되지 않은 것인지를 명시적으로 언급하는 것도 좋을 것 같습니다.
매우 오래된 phpbb였고 몇 가지 플러그인이 설치되어 있었습니다. 조금 정리한 후 phpbb 3.0.12에서 최신 3.1 또는 3.2로 성공적으로 업그레이드했고, 각 버전에 대해 가져오기를 테스트해 보았지만 작동하지 않았습니다. 데이터베이스 관련 문제일 수 있습니다. 그래서 다음에 전체 가져오기에 성공하신다면 그 결과를 알려주시면 도움이 될 것입니다. 만약 phpbb의 데이터베이스 문제라면 도움을 받아서 심층적으로 조사해 보겠습니다. 스크립트 문제라면 기다릴 수 있습니다. 메시지 감사합니다!
phpBB3 가져오기를 마지막으로 한 시점이 언제였는지 기억이 나지 않습니다. 스크립트가 너무 잘 작동하기 때문에 (하지만 확인할 방법은 없지만) 그런 것 같습니다.
게시물이 Discourse로 업로드되는 중이므로, 문제는 아마도 phpBB 게시글 내에서 해당 파일들이 어떻게 참조되고 있는지와 관련이 있을 것입니다. 실행할 때 오류가 표시됩니까? 오류 메시지가 단서를 줄 수 있습니다. 아니면 플러그인이 게시글 및/또는 데이터베이스 내 참조 방식을 변경했을 수도 있습니다. 아마도 좀 더 자세히 파고들어야 할 것 같습니다.
이전 가져오기 과정에서도 몇 가지 “파일 누락”, “잘못된 게시 시간” 오류가 발생했기 때문에 큰 문제가 아니라고 생각합니다. 첫 번째 실행 시 “부모 게시물이 존재하지 않음” 오류가 많이 발생했지만, 이 스레드에서 이전에 언급된 바와 같이 스크립트를 두 번째로 실행하면 이 문제가 해결됩니다.
그 외에는 스크립트가 주요 문제 없이 꽤 잘 실행되었습니다.
파일들을 하위 폴더(월과 연도별)로 정리하는 플러그인(표현상 htaccess 파일인 것으로 보입니다. 저는 이 포럼을 운영하지 않았습니다)이 있었지만, 저는 모든 파일을 동일한 폴더로 정리했고 클린 버전의 phpbb에서 업그레이드를 진행했는데 정상적으로 작동했습니다. 가져온 모든 파일은 phpbb 3.1, 3.2에서 활성화되어 있었습니다.
데이터베이스를 좀 더 자세히 살펴볼 것입니다. 이전 가져오기에서 생성된 sql 파일이 있을 수도 있습니다. 테스트 서버에서 첨부파일 테이블과 게시물 테이블을 비교해 보겠습니다. 놓친 부분이 있을지도 모르겠습니다.
안녕하세요, 방금 약 35k개의 게시물을 가져왔습니다. 가져오는 과정에서 "Parent post XXXXXX doesn’t exist. Skipping"라는 메시지가 많이 표시되었고, 처리가 끝난 후 Discourse 포럼을 확인해 보니 모든 "토픽"은(아마도) 존재했지만 답변이 하나도 없었습니다. 실질적으로 토픽 자체만 가져와졌고, 게시물(토픽 본문이 포함된 첫 번째 게시물을 제외하고)은 가져와지지 않았습니다.
또한, “import” 폴더 아래 올바른 디렉터리 구조에 아바타 파일을 넣어 두었음에도 불구하고 아바타도 가져와지지 않았습니다.
원래 포럼은 phpBB2였고, phpBB3로 정기적으로 가져와져 모든 게시물이 정상적으로 표시되고 있었지만, 이전에 오래된 메시지들을 많이 삭제했습니다. 다만 phpBB3에서는 모든 것이 정상으로 보입니다.
이 주제를 여러 번 읽었고 몇 번의 마이그레이션을 수행했지만, 매번 이 플러그인으로 인해 혼란을 겪었고 유사한 버그에 직면했습니다. 세 번째 마이그레이션을 진행 중인데 정말 지칠 대로 지쳤습니다. 이 플러그인의 작동 방식이 마이그레이션을 수행하는 사용자를 혼란스럽게 할 수 있다고 생각합니다.
마이그레이션 과정 이후에 Discourse에서 플러그인을 활성화해야 한다는 점을 어딘가에 명시해야 합니다. 만약 이미 어딘가에 적혀 있다면 제가 놓친 것일 수 있고, 그렇다면 이 정보를 더 강조해야 할 것입니다.
정규식의 시작 부분에는 : 문자가 있다고 가정하지 않는다는 점에 주목하십시오: <!-- s
하지만 정규식의 끝에는 : 문자가 있다고 가정합니다: <!-- s?:
(또한, 정규식의 끝에는 s 문자를 0개 또는 1개 일치시키는 ?가 있는 반면, 정규식의 시작에는 그런 것이 없는 이유가 궁금합니다)
이 정규식에서 :를 제거했고, 제 두 가지 이모지 문제가 완전히 해결된 것 같습니다.
제 phpbb 포럼에서 많은 이모지가 실제로 :mrgreen:이나 :evil:처럼 :으로 시작했지만, 8-)이나 ;)처럼 시작하지 않는 것도 있었습니다.
기존 정규식으로 인해 이모지가 잘못 캡처되었습니다. 예를 들어, 서로 인접한 여러 이모지가 하나의 이모지로 캡처되었습니다.
phpBB 3.0.7 마이그레이션 과정에서 제 상황을 겪고 있는 분들에게 도움이 될 수 있는 또 다른 문제를 수정했습니다.
어떤 이유에서인지, 제 phpBB 포럼 게시물 내용 중 일부 줄의 시작 부분에 공백이 여러 개 연속으로 들어가 있는 경우가 있었습니다. 메시지 작성 시 일부 사용자가 공백 키를 무의식적으로 여러 번 누르는 것을 좋아한다고 추측해 봅니다. 렌더링된 페이지에서는 이러한 여러 공백이 무시되었기 때문에 실제로는 중요하지 않았죠:
phpBB 원본 텍스트 내용:
Salut tous <!-- s:) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Sourire" /><!-- s:) -->
Alors voilà, le combi n'a pas roulé beaucoup ces derniers temps cause CT pas OK <!-- s:evil: --><img src="{SMILIES_PATH}/icon_evil.gif" alt=":evil:" title="Diable" /><!-- s:evil: --> mais il a fait ces 2000 kms sans broncher <!-- s;) --><img src="{SMILIES_PATH}/icon_e_wink.gif" alt=";)" title="Clin d\'oeil" /><!-- s;) -->
Maintenant le CT est OK . Merci L'Atelier Du Raz 8-')
Je dois donc changer le joint-spi au bout de 40 000 kms en 10 ans <!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Yeux tournants" /><!-- s:roll: -->
C'est un silicone et j'ai vu qu'il y avait des "doubles lèvres " !?
What's About ?
Je trouve ça un peu limte <!-- s:evil: --><img src="{SMILIES_PATH}/icon_evil.gif" alt=":evil:" title="Diable" /><!-- s:evil: -->
Merci tous, fred