질문/조언질답게시판
Extra Form
PHP PHP 7.3
CMS Rhymix 2.x

쉘 상에서 common/scripts 에 있는 스크립트를 실행하면 아래와 같은 에러가 나옵니다.

해당 파일을 열어봐도 무엇이 문제인지, 어디를 손봐야할지 잘 모르겠습니다.

 

도움을 요청드립니다!

 

 

 

sh-4.4$ sudo -u http php clean_garbage_files.php
PHP Exception: Error #0 "Undefined class constant 'MYSQL_ATTR_USE_BUFFERED_QUERY'" in common/framework/db.php on line 117
#0 /volume2/web/jbrc/common/framework/db.php(82): Rhymix\Framework\DB->__construct()
#1 /volume2/web/jbrc/common/scripts/clean_garbage_files.php(22): Rhymix\Framework\DB::getInstance()

  • profile

    에러가 나는 부분은 웹과 쉘 모두 공통으로 사용하는 DB 접속 함수입니다. 웹에서 사이트를 구동하는 데는 문제가 없는데 쉘에서만 안 된다면 웹에서 사용하는 PHP와 쉘에서 사용하는 PHP가 다를 가능성이 높습니다.

     

    같은 서버라도 웹용 PHP와 쉘용 PHP는 다릅니다. 서로 다른 확장모듈이 설치되어 있는 것은 기본이고, 심지어 버전이 완전히 다른 경우도 심심찮게 봅니다. 사용하시는 리눅스 배포판에서 권장하는 정식 패키지를 사용하지 않고 다른 저장소를 끌어다 쓴 경우 어긋나기 쉽고, 컴파일 설치했다면 거의 100%의 확률로 서로 어긋납니다.

    쉘 버전에 PDO MySQL 드라이버가 설치되어 있지 않은 것으로 보입니다. php -v; php -m 명령으로 PHP 버전 및 필수 확장모듈 설치 여부를 확인해 보세요.

  • profile ?
    확인해 봤는데, PDO는 설치되어 있습니다. 말씀하신대로 버전에 문제가 있는 건가 싶네요.. phpinfo를 통해 확인한 php 버젼은 7.3.24 인데 php -v 로는 7.3.3 이 나옵니다. 제 기억으로는 제가 쉘에서 사용하는 php를 별도로 설치한 적이 없는데, 이걸 맞추려면 어떻게 해야할까요?

    sh-4.4$ php -m
    [PHP Modules]
    bcmath
    bz2
    Core
    ctype
    curl
    date
    dom
    filter
    hash
    iconv
    json
    ldap
    libxml
    mbstring
    openssl
    pcntl
    pcre
    PDO
    pdo_sqlite
    ...

    sh-4.4$ php -v
    PHP 7.3.3 (cli) (built: Dec 18 2020 10:30:19) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies
  • ? profile
    글쎄요, 애당초 어떻게 설치했는지 알아야 업데이트도 할 수 있겠지요. 어떤 종류의 리눅스인가요?
    그리고 PDO 바로 다음줄이 pdo_sqlite라면 pdo_mysql은 설치되어 있지 않은 것입니다.