Router::parseURL 관련 오류
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.3 |
외부에서 라이믹스 게시판 에디터에 첨부화일을 넘겨주는(?) 모듈이 있는데
라이믹스 업데이트 이후 (라이믹스 업데이트 때문인지, 모듈 수정 때문인지는 모르겠습니다.)에 작동시켜 보니 에러가 발생합니다.
그런데 에러메세지에 언급된 모듈(board_assitant)은 (제 생각엔) 전혀 관계 없는 모듈입니다.
조언 부탁드립니다..
에러 내용:
{"error":-1,"message":"\uc11c\ubc84 \uc624\ub958\n\nTypeError #0 \"Argument 2 passed to Rhymix\\Framework\\Router::parseURL() must be of the type string, null given, called in \/home\/momeng\/www\/modules\/board_assistant\/board_assistant.controller.php on line 18\" in modules\/board_assistant\/board_assistant.controller.php on line 18 (via common\/framework\/Router.php on line 120)"}
위 메세지에서 언급된 board_assitant.controller.php 18라인 근처의 내용
class Board_assistantController extends Board_assistant
{
private static bool $blockZstt = false;
public function triggerAfterInsertText($obj)
{
if (self::$blockZstt) {
return;
}
$config = $this->getConfig();
if ($config->enabled !== 'true' || !$config->openai_key || !$config->openai_model) {
return;
}
$ref = \Rhymix\Framework\Router::parseURL('GET', $_SERVER['HTTP_REFERER'], 2);
$segments = explode('/', $ref->url);
$documentSrl = (int) end($segments);
if (!$documentSrl) {
$documentSrl = (int) $_SESSION['board_assistant_record_section_document_srl'];
}
{
private static bool $blockZstt = false;
public function triggerAfterInsertText($obj)
{
if (self::$blockZstt) {
return;
}
$config = $this->getConfig();
if ($config->enabled !== 'true' || !$config->openai_key || !$config->openai_model) {
return;
}
$ref = \Rhymix\Framework\Router::parseURL('GET', $_SERVER['HTTP_REFERER'], 2);
$segments = explode('/', $ref->url);
$documentSrl = (int) end($segments);
if (!$documentSrl) {
$documentSrl = (int) $_SESSION['board_assistant_record_section_document_srl'];
}
스코스코
Lv. 5
댓글 7
Router.php에서 120번 라인의 function은
public static function parseURL(string $method, string $url, int $rewrite_level): Request
입니다.
method는 'GET' 이고, string값인 url 값이 null로 넘어가고 있는건 아닌지 확인 해 보셨을까요?
맥락을 보아하니 $_SERVER['HTTP_REFERER'] 인 것 같은데 사이트 도메인이 하나라면 string으로 하드코딩하여 넘겨보심은 어떠신지요?
모듈을 몰라 어떻게 수정해야할지 말씀드리기 어렵네요
Router::parseUrl에 리퍼러를 그대로 넘기는 것은 아무 의미가 없으니
처음부터 잘못 구현된 모듈입니다.
리퍼러가 null이 아니고 정상적인 https://... URL이 담겨 있다 해도 안 되는 것은 똑같습니다.
Router::parseUrl이 기대하는 것은 그런 형식의 URL이 아니기 때문입니다.
만약 $ref에 어떤 결과가 담겨 나온다고 해도 그건 그냥 에러내서 토해낸 것이지, 정상적인 결과가 아닐 겁니다.
따라서 해당 부분의 코드를 지워버리더라도
작동 안 하는 것은 여전히 안 하고, 결과적으로 큰 차이 없을 것으로 예상됩니다.