그누보드5 MySQL이 설치되지 않아 mysql_connect 함수를 사용할 수 없습니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
그누보드5 MySQL이 설치되지 않아 mysql_connect 함수를 사용할 수 없습니다.

QA

그누보드5 MySQL이 설치되지 않아 mysql_connect 함수를 사용할 수 없습니다.

본문

그누보드5 MySQL이 설치되지 않아 mysql_connect 함수를 사용할 수 없습니다.

 

첫 설치에 이렇게 나오는데 어떻게 하면 좋을까요?

php8 이고 mysql 설치 완료까지 다 되었고, 계정이랑 비밀번호 db이름 모두 정상입니다.

php-mysql 모듈도 설치했습니다

 

이 질문에 댓글 쓰기 :

답변 3

언급된 에러 메세지는 다음 링크에서 나오는것 같습니다.

https://github.com/gnuboard/gnuboard5/blob/master/lib/common.lib.php#L1687

 

https://github.com/gnuboard/gnuboard5/blob/master/config.php#L221

에서 아래 부분 확인이 필요할것 같습니다.


define('G5_MYSQLI_USE', true);

※ 사용하시려는 MySQL 서버가 TCP/IP 연결을 수용하지 않고 있어서 그렀습니다.

  - 그누보드의 경우 소스가 TCP/IP 연결을 사용하게 설계된 듯합니다.

  - MySQL 서버가 소켓 파일과 TCP/IP 연결을 받아들이게 설정하시면 될 것입니다.

 

※ 이전 설치의 경우라면 ,

PHP 7.0부터 mysql_connect 함수가 제거되었기 때문에 이런 error가 발생합니다.

님의 project가 "PHP 8에서  mysql_connect를 사용하면 지원되지 않는 함수"를

머금고 있어서, 이로 인해 오류가 발생하므로, mysqli 또는 PDO 같은 대체 함수로

님의 project 소스 코드를 수정하셔야 합니다.

 

※ 이전 설치가 아니신 경우 ,

그누보드5에서 MySQL server TCP/IP 연결을 기본으로 하는데,

데이터베이스 서버가 소켓 파일을 통해 연결을 요구하는 경우라면,

이런 연결 오류가 발생할 수 있습니다.

 

♣ 해결 방안 ;

  - MySQL Server가 TCP/IP로 연결되도록 설정되어 있는지 확인.

    > 가능하시다면, 소켓 파일 경로를 명시합니다.

       - 소켓 파일 연결을 사용할 경우

  - PHP에서 mysqli 또는 PDO로 소켓 파일을 통한 연결이 되도록 설정.

    > 그누보드 소스(/data/dbconfig.php)를 '소켓 파일 연결'로 수정하거나

       DB Server가 'TCP/IP 연결'을 수용하게 하는 것입니다.

 

♣ DB 연결방식 확인 ;

  - MySQL 설정 파일인 my.cnf에서 소켓 파일 경로를 기본으로 지정하는 지 확인.


. . .
[mysqld]
[mysqld]
socket = /var/lib/mysql/mysql.sock       # 소켓 파일 경로 설정
bind-address = 127.0.0.1                 # TCP/IP 연결 활성화
. . .
-소켓 파일만 수용한 경우이라면 

"""bind-address = 127.0.0.1""" 이 와 유사한 코드가 없을 것입니다.

 

※ 현재 님의 경우;

  - MySQL 서버가 소켓 파일만을 사용하도록 설정되어 있을 것으로 추정 됩니다.

  - 그누보드의 데이터베이스 연결 코드에 소켓 파일 경로를 명시하여 해결을 시도하세요.

/data/dbconfig.php

// 스포츠 뉴스가 mysqli_connect에 소켓 파일 경로를 추가하여 연결 함
$host = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'database_name';
$socket = '/var/lib/mysql/mysql.sock';  // """실제 소켓 파일 경로""" 입력
$connection = mysqli_connect($host, $username, $password, $dbname, null, $socket);
if (!$connection) {
    die("Database connection failed: " . mysqli_connect_error());
}

  - MySQL의 소켓 경로를 확인하려면, phpinfo()를 다음과 같이 사용합니다.


// 이 코드를 브라우저에서 load하여 경로를 확인하시여 적용 하세요.
<?php
phpinfo();
?>
  - mysqli 세션의 """mysqli.default_socket:""", 이 Directive의

  Local Value 값이 소켓 경로입니다.

  - 이 값을 """실제 소켓 파일 경로"""로 입력 ~

 

♠ 결론 ;

  > 님의 Project가 DB server와  "소켓 파일" 연결이냐,  TCP/IP 연결이냐 -의 문제입니다.

 

  ★ TCP/IP 연결은 외부 접근이 필요하거나 여러 서버에서 MySQL을 사용할 경우 

  ★ 소켓 파일 연결은 동일 서버 내에서 빠른 속도로 데이터베이스에 접근하는 경우

     - 에 유리합니다.

 

  > 저의 경험으로 편한 방법은 DB Server가 TCP/IP 연결을 수용하게 하는 것이더군요 !

답변을 작성하시기 전에 로그인 해주세요.
전체 1
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT