Background Image

FORUM

2022.04.27 11:20

php 7.4 접속 에러

조회 수 170 추천 수 0 댓글 16
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Red Hat Enterprise Linux release 8.5 64bit
CUBRID Ver.
10.2
CUBRID TOOL Ver.
SQLGate for CUBRID Developer
응용 환경(API)
PHP 7.4 CI 3.1.4


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
현재 빌드가 끝나서

 

화면 캡처 2022-04-27 111924.png

 

정보 확인하였고, 디비 접속툴로 잘 접속이 되지만 PHP 소스상으로 접근을 하였을때는 에러가 발생합니다.

방화벽도 열려 있는거 확인했습니다.

화면 캡처 2022-04-27 112023.png

 

미리 답변 감사드립니다.

 

 

  • ?
    오명환 2022.04.28 09:18
    해당 오류 (-20016)은 php driver 내부에 발생한 오류로 DB connection시 인자 또는 URL를 잘 못 사용하시거나 network 오류에 의해 발생할 수 있습니다.

    우선, DB connection시 사용하신 인자 또는 URL를 점검해보시고,
    두번째는 php driver가 있는 서버에서 telnet 등을 이용해서 DB 서버의 33000 포트에 연결이 가능한지 확인을 해보세요.
  • ?
    jslee 2022.04.28 13:58
    답변 감사드립니다.

    1. DB connection 시
    cubrid_connect("172.32.1.40", 33000, "test_db, "dba", "1234");으로 접속 시도 하였습니다.

    2. telnet 172.32.1.40 33000 연결 확인 및 외부접속도 가능한 상태입니다.
  • ?
    김병욱 2022.04.29 11:49
    172.32.1.40 서버에서
    cubrid broker status 명령으로 broker가 동작 중인지 확인이 필요합니다.
    만약 broker가 동작하고 있지 않다면 cubrid broker start 명령으로 broker를 동작시켜 주어야 합니다.
    물론 cubrid_broker.conf 에서 BROKER_PORT가 33000으로 그리고 SERVICE가 ON으로 되어 있는지도 확인이 필요합니다.
  • ?
    jslee 2022.04.29 12:09
    답변 감사드립니다.

    1. cubrid broker status ->
    @ cubrid broker status
    % query_editor
    ----------------------------------------------------------------------
    ID PID QPS LQS PSIZE STATUS
    ----------------------------------------------------------------------
    1 158067 0 0 47340 IDLE
    2 158068 0 0 47340 IDLE
    3 158069 0 0 47340 IDLE
    4 158070 0 0 47340 IDLE
    5 158071 0 0 47340 IDLE

    % broker1
    ----------------------------------------------------------------------
    ID PID QPS LQS PSIZE STATUS
    ----------------------------------------------------------------------
    1 158078 9 0 82776 CLOSE_WAIT
    SQL:
    2 158079 40 0 84200 CLOSE_WAIT
    SQL:
    3 158080 7 0 82608 CLOSE_WAIT
    SQL:
    4 158081 19 0 82640 CLOSE_WAIT
    SQL:
    5 158082 0 0 82440 IDLE





    2. cubrid_broker.conf ->
    [broker]
    MASTER_SHM_ID =30001
    ADMIN_LOG_FILE =log/broker/cubrid_broker.log

    [%query_editor]
    SERVICE =ON
    SSL =OFF
    BROKER_PORT =30000
    MIN_NUM_APPL_SERVER =5
    MAX_NUM_APPL_SERVER =40
    APPL_SERVER_SHM_ID =30000
    LOG_DIR =log/broker/sql_log
    ERROR_LOG_DIR =log/broker/error_log
    SQL_LOG =ON
    TIME_TO_KILL =120
    SESSION_TIMEOUT =300
    KEEP_CONNECTION =AUTO
    CCI_DEFAULT_AUTOCOMMIT =ON

    [%BROKER1]
    SERVICE =ON
    SSL =OFF
    BROKER_PORT =33000
    MIN_NUM_APPL_SERVER =5
    MAX_NUM_APPL_SERVER =40
    APPL_SERVER_SHM_ID =33000
    LOG_DIR =log/broker/sql_log
    ERROR_LOG_DIR =log/broker/error_log
    SQL_LOG =ON
    TIME_TO_KILL =120
    SESSION_TIMEOUT =300
    KEEP_CONNECTION =AUTO
    CCI_DEFAULT_AUTOCOMMIT =ON


    말씀하신 내용 확인하였는데 이상한 점이 있을까요?

    감사합니다.
  • ?
    김병욱 2022.04.29 12:47

    php에서 cubrid_connect (..., 33000, ...) 접속은 broker1 입니다. 그런데 broker1의 상태를 보면 CLOSE_WAIT 입니다.
    정상적인 접속 시도인데, 접속이 안되고 CLOSE_WAIT 상태로 들어간 것이라면 현재 firewall 상태를 확인해 보는 것이 좋겠습니다.
    상황에 따라서는 firewall 환경을 설정할 수 있는 시스템 담당자나 root권한을 가진 사용자가 firewall 세팅을 점검해 볼 필요가 있습니다.
    만약 firewall에서 접속을 거부하는 상태라면, 접속 borker port인 33000에 대해 TCP 연결이 가능하도록 firewall을 설정해야 할 수도 있겠습니다.

     

    간단하게 체크할 수 있는 방법으로

    telent 172.32.1.40 33000

    이렇게 하면, 

     

    Trying 172.32.1.40 ...
    Connected to 172.32.1.40.
    Escape character is '^]'.

     

    위와 같은 응답이 있어야 정상적으로 포트가 열려있다고 확인할 수 있겠습니다.


     

  • ?
    jslee 2022.04.29 13:52

    빠른 답변 감사드립니다.

    접속할려는 php 셋팅이 되어 있는 서버에서
    $ telnet 172.32.1.40 33000
    Trying 172.32.1.40...
    Connected to 172.32.1.40.
    Escape character is '^]'.

    이렇게 확인 되었습니다.

     

    그래도 브로커1이 다 IDLE 상태여야 된다는 의미인가요?

    ----------------------------------------------------------------------
    ID PID QPS LQS PSIZE STATUS
    ----------------------------------------------------------------------
    1 158078 9 0 82776 CLOSE_WAIT
    SQL:
    2 158079 40 0 84200 CLOSE_WAIT
    SQL:
    3 158080 7 0 82608 CLOSE_WAIT
    SQL:
    4 158081 19 0 82640 CLOSE_WAIT
    SQL:
    5 158082 0 0 82440 IDLE

  • ?
    김병욱 2022.04.29 14:02
    cubrid server status 명령으로 해당 cubrid server가 동작 중인지도 확인해 주세요.
    @ cubrid server status
    Server demodb (rel 10.2, pid 135273)
    위와 같은 결과가 나오면 정상적으로 동작 중인 것으로 확인할 수 있습니다.
    server가 동작중이 아니라면, cubrid server start demodb 처럼 해당 서버를 start 해줘야 합니다.
  • ?
    jslee 2022.04.29 14:05

    빠른 답변 감사드립니다.

    $ cubrid service status
    @ cubrid master status
    ++ cubrid master is running.
    @ cubrid server status
    Server test_db (rel 10.2, pid 184503)
    @ cubrid broker status
    NAME PID PORT AS JQ TPS QPS SELECT INSERT UPDATE DELETE OTHERS LONG-T LONG-Q ERR-Q UNIQUE-ERR-Q #CONNECT #REJECT
    ===========================================================================================================================================================================================================
    * query_editor 184954 30000 5 0 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 0
    * broker1 184965 33000 5 0 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 0
    @ cubrid manager server status
    ++ cubrid manager server is running.

     

    $ cubrid broker status
    @ cubrid broker status
    % query_editor
    ----------------------------------------------------------------------
            ID   PID                  QPS        LQS   PSIZE STATUS
    ----------------------------------------------------------------------
             1 184955                    0          0   47340 IDLE
             2 184956                    0          0   47340 IDLE
             3 184957                    0          0   47340 IDLE
             4 184958                    0          0   47340 IDLE
             5 184959                    0          0   47340 IDLE

    % broker1
    ----------------------------------------------------------------------
            ID   PID                  QPS        LQS   PSIZE STATUS
    ----------------------------------------------------------------------
             1 184966                    0          0   47340 IDLE
             2 184967                    0          0   47340 IDLE
             3 184968                    0          0   47340 IDLE
             4 184969                    0          0   47340 IDLE
             5 184970                    0          0   47340 IDLE
     

  • ?
    김병욱 2022.04.29 14:45
    처음 댓글에서 아래와 같이 접속했다고 하셨는데요
    cubrid_connect("172.32.1.40", 33000, "test_db, "dba", "1234");
    이 php command에 잘 보면 오타가 있습니다. 쌍따옴표가 test_db 앞에 1개만 있고, test_db 뒤쪽에 빠져 있습니다. 아래와 같이 고쳐야 합니다.
    cubrid_connect("172.32.1.40", 33000, "test_db", "dba", "1234");

    본 게시판에만 오타가 있는건지요? 아니면 원래 php 코드에 오타가 포함되었는지 확인이 필요합니다.
  • ?

    답변 감사합니다.

    개인정보 차 db 이름을 수정하였습니다. 임의로 수정하다보니 따옴표가 빠진거 같습니다.
    이해 부탁드립니다.

     

    그리고 혹시나 하는 마음에 

    https://www.cubrid.com/qna/3830561 을 참고 하여 php가 7.4 인 관계로 cubrid_php 드라이브 버전을 10.2 에서 11로 올려서 테스트를 해보았지만 같은 오류를 발생합니다.

    화면 캡처 2022-04-29 145338.png

     

    사용하고 있는 테스트 코드 입니다.

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("172.32.1.40", 33000, "test_db", "dba", "1234");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);
    ?>
     

     

  • ?
    김병욱 2022.04.29 14:54
    $CUBRID/log/broker/sql_log/broker1_1.sql.log 파일을 확인해 보시면,
    접속 기록이 있습니다.

    접속 기록을 잘 살펴보면, 어떤 오류가 있었는지도 확인할 수 있을 것 같습니다.
  • ?
    jslee 2022.04.29 15:05
    빠른 답변 감사합니다.

    접속이 안되어서 그에 대한 로그는 기록되지 않아서 $CUBRID/log/broker/error_log/broker1_1.err 추적했지만 별다른 에러 메시지는 없었습니다.
  • ?
    김병욱 2022.04.29 15:20
    기본적으로 broker는 TCP socket으로 통신을 하는데, 이 TCP socket connection이 문제인 경우 -20016 에러가 발생합니다.
    전체 현상을 보면 DB서버까지 접속 조차 하지 못한 것으로 파악이 됩니다.
    firewall은 다 열려있다고 하셨는데, 혹시나 한번 더 점검을 해주시면 어떨까라는 생각이 듭니다.
    - firewall 설정에서 해당 포트가 in bound 와 out bound 모두 열려있는지 확인해보면 좋을 것 같습니다.
  • ?
    jslee 2022.04.29 15:43

    답변 감사합니다.

    큐브리드 디비가 설치되어 있는 서버에서는
    1. 인바운드
    IP 버전 유형 프로토콜 포트범위 대상
    IPv4 사용자 지정 TCP TCP 33000 172.32.1.189/32
    IPv4 사용자 지정 TCP TCP 30000 172.32.1.189/32

    2. 아웃바운드
    IP 버전 유형 프로토콜 포트범위 대상
    IPv4 모든 트래픽 전체 전체 0.0.0.0/0


    $ telnet 172.32.1.40 33000
    Trying 172.32.1.40...
    Connected to 172.32.1.40.

    sqlGate for cubird 접속 테스트 성공입니다.

    감사합니다.

  • ?
    kisoo 2022.04.29 16:13
    인바운드 172.32.1.189/32는 src IP가 172.32.1.189 만 허용하겠다는 의미 입니다.
    인바운드를 172.32.1.189/16 또는 172.32.1.189/24로 수정해보시기 바랍니다.
  • ?
    jslee 2022.04.29 16:33

    답변 감사드립니다.

    172.32.1.189/32 테스트 서버는 이아이피 하나입니다.

    sqlGate for cubrid 로 접속 테스트 성공은 공인 아이피를 등록 해서 성공입니다.

    172.32.0.0/16, 172.32.1.0/24로 아이피 대역대를 확대해도 에러메시지는 같습니다.

    감사합니다.

     

    같은 환경에서 접속정보를 큐브리드가 아닌 mysql 로 작성해서 접속 테스트를 하였는데 연결이 잘됩니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4258
3816 /home/jenkins/workspace/cubrid_release_10.1/src/transaction/boot_cl.c, line 1138 CODE = -971 Tran = -1, EID = 1Program 'tranlist' (pid ) connected to database server 'test' on the host 'localhost' 4 jmkim 2023.03.13 187
3815 macOS CUBRID 다운로드 질문 1 bk9395 2023.03.13 179
3814 CUBRID 11.2 & CUBRID Aadmin 11.1 오류 문의 2 file 붉은구름 2023.03.08 133
3813 도커에서 설치시 접속 문의드립니다. 1 핫산 2023.03.07 360
3812 특수문자 포함 LIKE검색 1 SEO 2023.03.06 143
3811 cubrid admin 질문 드립니다. 3 file 초코초코초 2023.03.06 116
3810 plugin방식 호출 1 file 네오랜덤 2023.03.04 127
3809 서브쿼리시 질문드립니다. 2 dev123123 2023.02.28 146
3808 Cubrid DB 의 sqoop 사용시 옵션 문의 1 망고라떼 2023.02.28 94
3807 큐브리드 통계정보 관련 문의드립니다. 1 초코초코초 2023.02.26 110
3806 cubrid 매니저 패스워드 공용으로 사용하는건가요?? 2 학아 2023.02.24 166
3805 list 합수의 결과를 varchar 컬럼에 insert 시 오류 문의 1 file 플레이어블 2023.02.24 120
3804 LOG 설정 관련 질문입니다. 1 jemin 2023.02.23 84
3803 큐브리드 unload 문의드립니다. 5 초코초코초 2023.02.22 204
3802 Mac OS 에서 Cubrid Manager 실행이 안됩니다. 1 file 엘L 2023.02.20 273
3801 쿼리 플랜 cardinality, cost 이상 1 parknnna 2023.02.16 180
3800 조건절 in 에 들어가는 순서대로 뽑고 싶습니다. 1 구르마도리 2023.02.15 89
3799 Cubrid 11.2 접속 문제. 1 엘L 2023.02.15 130
3798 cubrid 매니저 백업 자동화 추가 비활성 1 제리리 2023.02.15 120
3797 Mac OS 큐브리드 매니저 설치 문제 6 file DJ 2023.02.13 280
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 199 Next
/ 199

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales