본문 바로가기

major/Web

PHP로 .ini 파일 읽기

인터넷에 돌아다니는 DB 접속 예제를 보면, 서버 로그인 정보가 코드에 노출되어 있는 예제가 대부분입니다. 개인적으로만 코드를 작성하고 파일을 가지고 있다면 모르겠지만, github에 코드를 올릴 예정이라면 다릅니다. 중요한 서버 로그인 정보가 인터넷 사용자 모두에게 보여지게 됩니다. 이런걸 방지하기 위해서 보통 접속 정보는 account.ini 파일에 저장하고 .gitignore에 추가해서 git에 저장되지 않도록 막습니다.

 

account.ini 파일 예시

저는 웹 호스팅을 하는 서버가 따로있고, 그와 비슷한 환경으로 Local 서버를 구축했습니다. 그래서 account.ini에 [DOTHOME], [LOCAL]이라는 섹션 두개를 만들고, 각 서버에서 DB에 접속하기 위한 HOST, USER, PW, DBNAME을 저장했습니다. 

[DOTHOME]
HOST = 'localhost'
USER = '아이디'
PW = '비밀번호'
DBNAME = 'DB명'

[LOCAL]
HOST = 'localhost'
USER = 'root'
PW = '123456'
DBNAME = 'SM_QNA_DB'

이렇게 설정한 account.ini 파일을 php로 읽는 코드는 간단합니다.

$ini_array = parse_ini_file("account.ini", true);
$host = $ini_array['DOTHOME']['HOST'];
$user = $ini_array['DOTHOME']['USER'];
$pw = $ini_array['DOTHOME']['PW'];
$dbName = $ini_array['DOTHOME']['DBNAME'];

위 코드는 DOTHOME 섹션의 HOST, USER, PW, DBNAME을 가져와서 $host, $user, $pw, $dbName에 저장하는 코드입니다. 만약 LOCAL 섹션의 변수를 가져오고싶다면  $ini_array['LOCAL']['변수']로 변경하면 됩니다.

 

아래는 ini 파일의 접속 정보를 불러온 뒤, MySQL DB에 접속해서 SELECT로 데이터를 불러오는 코드입니다.

<?php
    date_default_timezone_set('Asia/Seoul');
    
    $ini_array = parse_ini_file("account.ini", true);
    $host = $ini_array['LOCAL']['HOST'];
    $user = $ini_array['LOCAL']['USER'];
    $pw = $ini_array['LOCAL']['PW'];
    $dbName = $ini_array['LOCAL']['DBNAME'];

    $conn = new mysqli($host, $user, $pw, $dbName);
    
    /* DB 연결 확인 */
    if($conn){ echo "DB 연결 성공 <br>";}
    else{ echo "DB 연결 실패 <br>"; }
    
    /* SELECT 구문 */
    $sql = "SELECT * FROM SM_QNA_TB";
    while($row = mysqli_fetch_array($result)){
        echo $row['컬럼명']."<br>".$row['컬럼명']."<br>";
    }

    mysqli_close($conn);
?>

잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다 :D