Q&A

XE_PATH_ already defined 에러 문의

2025.02.20 03:13
98
0
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 8.3

<b>Warning</b>: Constant _XE_PATH_ already defined in <b>/www/common/constants.php</b> on line <b>151</b><br /> {"success":true,"data":"1:숫자,2:1479,3:53,4:191,5:192,6:173,7:0,8:0,9:0,0:0,A:0,B:0,C:0,D:0,E:0,F:0,G:0,H:0,I:0,J:0,K:0,L:0,M:0,N:0,O:0,P:0,Q:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0","type":"private"}

 

위와같은 에러가 발생합니다.

 

_XE_PATH_ 정의가 여러번 되었다고 하는데 레이아웃이나 애드온에서 정의 되었을 가능성이 클까요?

 

톰캣 Lv. 11
시대의 흐름에 뒤떨어지지 않도록 아주 천천히지만 노력하고 있습니다.

댓글 11

  • 2025.02.20 03:21 #1859786
    모듈이나 애드온 등 라이믹스 실행 과정에서 호출되는 프로그램들은 이미 모든 상수가 정의된 상태에서 시작하므로, 상수를 따로 선언할 가능성이 낮습니다. 상수 중복이 발생하는 것은 대체로 외부 스크립트에서 코어 함수를 끌어 쓰려다가 일어나는 일입니다.

    aaa.model.php, bbb.addon.php, ccc.class.php 등 일반적인 모듈, 애드온, 위젯을 구성하는 파일들은 뻔하잖아요? 그 구조를 벗어나는 엉뚱한 php 파일이 굴러다니는 곳을 먼저 의심해 보세요. 예를 들면 pr_favorite 위젯이라든지... pr_favorite 위젯이라든지... ㅎㅎ
  • 2025.02.20 03:28 #1859799
    pr_favorite 위젯에서 확인 버튼 누르면 저게 딱나오네요 ㅎㅎ 어떻게 아시는건지 신기할다름이네요. ㅎㅎ
  • 2025.02.20 03:33 #1859807
    최상단에
    if(!defined("__XE__")) exit();
    로 하니 아예 작동을 안해버리고(에러는 안남)

    if (!defined('_XE_PATH_')) {
    define('_XE_PATH_', '/www/');
    }

    와 같이해보면 될까요?
  • 2025.02.20 04:28 #1859823
    나름 사이트의 핵심 기능인데 지금으로썬 안쓰는 방법 말고는 방법이 없는거겠죠? 특정 서버에서는 또 잘작동하고 특정서버에서는 또 작동안하고 그러네요.
  • 2025.02.20 05:07 #1859836

    혹시 DB에 따라서 _XE_PATH_ already defined 이 에러가 날 수 도 있고 안날 수 도 있을까요?

    maria db vs mysql

    리눅스 커널도 동일하고 

    아파치 버전도 동일하고

    다른건 DB만 다르긴합니다.

     

    image.png

     

    사실상 동일한코드인데 작동 미작동 차이가 있어서요.

  • 2025.02.20 05:09 #1859850

    라이믹스 설정이나 php.ini에서 에러를 숨기도록 해 놓은 서버라면 안 나오겠죠.
    치명적인 오류가 아닌 워닝이기 때문에 숨기면 그냥 넘어갑니다.

  • 2025.02.20 03:46 #1859815
    <?php
    if(!preg_match('/'.$_SERVER['HTTP_HOST'].'/', $_SERVER['HTTP_REFERER']))
    {
    print json_encode(array('success' => false, 'data' => 'ERROR_REFERER'));
    die();
    }

    define('__XE__', TRUE);
    define('_XE_PATH_', str_replace('widgets/pr_favorite/updateMyMenu.php', '', str_replace('\\', '/', __FILE__)));
    require _XE_PATH_ . 'config/config.inc.php';
    $oContext = Context::getInstance();
    $oContext->init();

    $success = false;
    $data = '';


    이렇게 _XE_PATH_를 똑같이 선언해버린게 문제인건가보네요 _XE_PATH_를 다른이름으로 교체해야할것 같은 느낌
  • 2025.02.20 05:07 #1859838
    define부터 $oContext->init()까지 5줄을 아래의 3줄로 교체하고

    chdir(dirname(dirname(__DIR__)));
    require 'common/autoload.php';
    Context::init();

    나머지 부분에서 _XE_PATH_를 쓰는 것은 그대로 둬도 될 거예요.
  • 2025.02.20 05:11 #1859855
    바로해결되었네요
    감사합니다!!!
  • 2025.02.20 13:06 #1859940
    pr_favorite 위젯이 뭔가 좋지 않은것이군요! 저는 쓰지도 않는 위젯인데 왜 설치되었을까요ㅠ 번개같이 삭제
  • 2025.02.21 00:16 #1859977
    아아 나쁜건 아니고 함수 선언을 중복되게하는 방식이 있네요
    메뉴 즐겨찾기 할 수 있는 나름 고급 기능의 위젯입니다. 근데 이게 위젯이 아닌 모듈로 만들어졌다면 이런일이 더 없이 않았을까 싶네요