invisnet
(Charles Lecklider)
7월 31, 2020, 12:50오후
1
더 많은 세부 정보를 제공하고 싶지만, 불행히도 사용할 수 있는 에러 메시지가 가능한 한 가장 도움이 안 되는 수준입니다:
이 게시물을 Discourse에 게시하는 동안 오류가 발생했습니다.
사이트나 Discourse에서 볼 수 있는 어떤 에러 로그에도 아무런 내용이 없습니다.
기존 토픽에 링크를 걸 수는 있지만, 이는 게시물의 메타데이터를 직접 업데이트하는 것보다 조금 더 도움이 되는 수준에 불과합니다.
설정에서 놓친 디버그 옵션이 있을까요? 아니면 유용한 에러 메시지를 얻을 수 있는 다른 방법이 있을까요?
neounix
(Dark Matter)
7월 31, 2020, 3:57오후
2
@invisnet 님, 안녕하세요!
브라우저에서 웹 개발자 도구를 열어 JS 콘솔에 오류가 있는지 확인해 보셨나요?
invisnet
(Charles Lecklider)
7월 31, 2020, 4:30오후
3
현재까지 특이사항은 없으며, 특히 Discourse에 관한 내용도 없습니다.
invisnet
(Charles Lecklider)
8월 8, 2020, 4:13오후
4
확인할 필요가 없는 부분들을 꽤 깊이 파고든 끝에, 다음과 같은 오류 메시지를 얻었습니다:
Can’t verify CSRF token authenticity.
이것은 원래 메시지와 거의 같은 수준의 도움밖에 되지 않습니다.
이로 인해 다음과 같은 결론을 내렸습니다:
2.6.0.beta1은 깨져 있습니다,
롤백할 방법이 없는 것 같으므로 2.5.0으로 롤백할 수 없어 업그레이드한 것이 실수였습니다,
discourse와/또는 wp-discourse의 단위 테스트가 개선이 필요합니다,
embed_url을 수동으로 설정할 방법이 없는 것 같아, 이 문제가 해결될 때까지 저는 꼼짝없이 고착 상태에 빠졌습니다
아마 이것이 일종의 해결책이겠죠…
simon
8월 8, 2020, 6:06오후
5
늦게 답변드려 죄송합니다. Support > WordPress 카테고리를 보고 있긴 했지만, 이 주제에 대해 알림을 받지 못한 것 같습니다.
상세한 오류 메시지를 확인하는 가장 쉬운 방법은 Query Monitor – WordPress plugin | WordPress.org English (Canada) 플러그인을 설치한 후 Discourse에 게시물을 게시해 보는 것입니다. WP Discourse 플러그인은 예전에는 모든 오류를 로그 파일에 저장했지만, WordPress 권장 사항에 어긋난다는 이유로 더 이상 그렇게 하지 않습니다.
Discourse에 게시물을 게시하려고 할 때 오류가 발생합니까, 아니면 특정 게시물에서만 문제가 발생하는 것입니까?
Discourse 2.6.0.beta1로 업그레이드한 것이 문제의 원인일 가능성은 낮아 보입니다. 플러그인이 작동하지 않게 된 시점前后에 WordPress 사이트에 변경 사항이 있었습니까?
invisnet
(Charles Lecklider)
8월 8, 2020, 6:26오후
6
오류는 도커 컨테이너의 production.log에만 표시되며, 다른 로그나 콘솔에는 아무것도 나타나지 않습니다(이미 Query Monitor를 실행했습니다).
새로운 모든 게시물입니다.
플러그인을 2.0.6으로 업데이트한 것뿐입니다. 하지만 플러그인의 문제는 아닙니다. git 태그를 거슬러 올라가 보았지만 해결되지 않았습니다.
simon
8월 8, 2020, 10:11오후
7
Query Monitor 플러그인이 오류를 표시하지 않는다는 점이 놀랍습니다. 다른 오류 메시지와 함께 다음과 같은 내용이 표시될 것으로 예상했지만요:
Discourse 관리자 / API 페이지에서 새로운 API 키를 생성해 보는 것이 좋습니다. 키가 글로벌 키(모든 작업 허용)인지 확인하세요. 또한 WP Discourse 연결 설정 탭에서 게시 사용자 이름(Publishing Username)이 올바르게 설정되어 있는지 확인하세요. 기존 Discourse 주제에 링크는 할 수 있지만 Discourse에 새 주제를 게시할 수 없다는 점을 고려할 때, 문제는 API 권한과 관련이 있을 가능성이 높아 보입니다.
마지막으로 확인해야 할 사항은 WordPress에서 Discourse로 게시물을 게시하려고 할 때 게시물 사용자 정의 필드(post custom fields)에 어떤 값이 설정되는지입니다. 편집기에서 사용자 정의 필드를 활성화하면 편집기 하단에 이와 유사한 내용이 표시되어야 합니다:
어떤 필드가 설정되고 있는지 알려주시면 문제의 원인을 파악할 수 있을지도 모릅니다.
invisnet
(Charles Lecklider)
8월 9, 2020, 12:47오전
8
저도 마찬가지입니다. 하지만 실제로는 아무것도 표시되지 않습니다. 만약 표시된다면 production.log에 보고된 대로 400 에러일 텐데, 그런 것은 아닙니다.
업데이트: 코드를 꼼꼼히 살펴본 결과, 에러가 표시되지 않는다는 것을 알 수 있습니다. 모든 것이 catch되고 있기 때문입니다. 이메일 보고를 활성화하면(이메일은 있지만 error_log()는 아닌가요?) 다음과 같이 알려줍니다:
실패 이유:
Discourse에서 400 응답 코드가 반환되었습니다.
Bad Request
하지만 이것뿐입니다.
이미 그렇게 했습니다. 차이가 없습니다. 그것은 마지막 수단이었어요 - 게시를 시도했을 때 이전 키의 “마지막 사용” 타임스탬프가 업데이트되었기 때문에 그것이 어떻게든 변경되지 않았다는 것을 알았지만, 시도해 볼 가치가 있다고 생각했습니다.
publish_post_category: 23
update_discourse_topic: 0
wpdc_publishing_error: Bad Request
wpdc_unlisted_topic: 1
이것뿐입니다. 아, 그리고 물어보시기 전에, "비공개로 게시(Publish as Unlisted)"를 설정하지 않아도 같은 증상이 나타나지만, 게시물 메타(post meta)에 예상되는 차이가 있습니다.
simon
8월 9, 2020, 12:49오전
9
자세히 설명해 주셔서 감사합니다. 월요일에 출근해서 다시 한번 확인해 보겠습니다.
simon
8월 10, 2020, 9:07오후
10
400 응답의 원인이 무엇일지 확실하지 않습니다. Health Check & Troubleshooting – WordPress plugin | WordPress.org English (Canada) 플러그인을 설치해 보시고 WordPress 사이트에서 문제가 보고되는지 확인해 주시겠어요? 해당 플러그인을 활성화하면 WordPress 대시보드의 도구 섹션에 ‘사이트 상태(Site Health)’ 항목이 추가됩니다. 해당 링크를 클릭한 후 상태 탭으로 이동하면 유용한 세부 정보를 확인할 수 있을 것입니다.
Health Check 플러그인은 현재 세션에 대해서만 플러그인을 일시적으로 비활성화할 수 있는 기능도 제공합니다. 이는 문제가 다른 플러그인과의 충돌과 관련이 있는지 확인하는 데 유용할 수 있습니다. 사이트에 보안 관련 플러그인이 설치되어 있다면, 해당 플러그인을 비활성화했을 때 문제가 해결되는지 확인해 볼 가치가 있습니다.
invisnet
(Charles Lecklider)
8월 17, 2020, 8:47오후
12
불행히도 막다른 골목에 다다랐습니다. Health Check 플러그인은 아무런 유용한 정보를 제공하지 않았고(예상했던 대로), 나머지는 완벽하게 작동하고 있습니다.
초대 발송을 자동화하던 중 CSRF 오류에 부딪혔는데, 이는 일반적으로 코드의 실수를 의미합니다. 그러나 이번 경우 플러그인은 변경된 바 없으므로, 2.6.0.beta1 버전에 문제가 있다는 결론을 내릴 수밖에 없습니다.
이 결론이 널리 받아들여지지는 않겠지만, 현재 제가 가진 유일한 결론입니다.
추가 수정: Health Check 플러그인을 사용해 다른 모든 플러그인을 비활성화해 보았지만, 결과는 달라지지 않았습니다.
invisnet
(Charles Lecklider)
8월 27, 2020, 2:41오후
14
2.6.0.beta2와 2.1.2에서도 문제가 지속됩니다.