BOARD

자료·레퍼런스

PHP 5.3 이상 환경에서 MSSQL 연동 드라이버 변경 및 설정 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 17회 작성일 26-09-28 15:15

본문

PHP 5.3 이상 환경에서 MSSQL 연동 드라이버 변경 및 설정 방법

PHP 5.3 이상 버전에서 지원이 중단된 phpmssql.dll 대신 Microsoft SQL Server Driver(phpsqlsrv.dll)를 다운로드하여 적용하고 php.ini 및 웹서버를 설정하는 방법을 안내합니다.

PHP 5.3 이상 MSSQL 연동 드라이버 변경 안내

PHP 5.3 버전부터는 기존에 사용하던 php_mssql.dll 드라이버의 지원이 중단되었습니다. 따라서 PHP 5.3 이상 환경에서 MSSQL 데이터베이스를 연동하려면 마이크로소프트(Microsoft Drivers for PHP for SQL Server)에서 제공하는 php_sqlsrv.dll 및 php_pdo_sqlsrv.dll 드라이버를 사용해야 합니다.

1. 확인 및 사전 조치 위치

  • php.ini 백업: 설정을 변경하기 전 현재 작동 중인 php.ini 파일을 먼저 백업합니다.
  • PHP 확장 디렉터리 확인: 드라이버 파일을 둘 경로인 PHP 확장 디렉터리 위치를 확인합니다.

2. 드라이버 설정 항목 및 방법

  1. 사용할 PHP 버전, 아키텍처(32비트/64비트), 스레드 안전(TS/NTS) 여부에 맞는 php_sqlsrv.dll 및 php_pdo_sqlsrv.dll 파일을 PHP 확장 디렉터리에 넣습니다.
  2. PHP 구성 파일인 php.ini의 extension 섹션에 다음과 같이 드라이버 로드 설정을 추가합니다.
    extension=php_sqlsrv_53_nts_vc9.dll
    extension=php_pdo_sqlsrv_53_nts_vc9.dll
    (※ 위 파일명 예시는 PHP 5.3 비스레드 안전(NTS) 환경 기준이며, 사용하는 PHP 구동 환경의 버전에 맞는 파일명을 기재해야 합니다.)
  3. 설정을 마친 후 웹 서버를 재시작합니다.

3. 다음 행동 및 예외 사항

  • 연동 실패 시: 웹 서버 재시작 후에도 연결이 되지 않는다면 phpinfo() 화면을 통해 sqlsrv 및 pdo_sqlsrv 모듈이 정상적으로 로드되었는지 확인합니다.
  • 함수 변경 주의: 드라이버가 변경됨에 따라 기존 mssql_connect 등의 프로시저 함수 대신 sqlsrv_connect 등의 새로운 API 규격으로 연동 코드를 수정해야 할 수 있습니다.

php.ini 파일에서 sqlsrv 드라이버 설정 및 활성화 절차

PHP 환경에서 MSSQL 연동 드라이버(php_sqlsrv.dll)를 활성화하기 위해서는 드라이버 파일을 확장 디렉터리에 배치한 후 설정 파일을 수정해야 합니다. 설정 전 반드시 php.ini 파일을 백업해 두어야 합니다.

1. 드라이버 파일 배치

  • 사용 중인 PHP 버전, 아키텍처(32/64bit), 스레드 안전(TS/NTS) 여부를 확인합니다. phpinfo()의 'Thread Safety' 항목이 'enabled'이면 TS, 'disabled'이면 NTS입니다.
  • 환경에 맞는 php_sqlsrv.dll 및 php_pdo_sqlsrv.dll 파일을 준비하여 PHP 확장 디렉터리(php.ini의 extension_dir 경로)에 복사합니다.

2. php.ini 설정 변경

  • php.ini 파일을 열고 extension_dir 항목의 경로가 올바르게 지정되어 있는지 확인합니다.
  • 설정 파일의 extension 섹션에 사용하는 PHP 버전과 환경에 맞는 드라이버 라인을 추가합니다.
extension_dir = "C:\xampp\php\ext"
extension=php_sqlsrv.dll
extension=php_pdo_sqlsrv.dll

3. 웹서버 재시작

  • 설정 변경을 완료한 후 Apache 또는 IIS 등의 웹서버를 재시작하여 변경된 설정이 적용되도록 합니다.

드라이버 설정 후 sqlsrv 모듈이 정상적으로 로드되었는지 확인하려면 phpinfo() 함수를 사용합니다.

확인 절차

  1. 웹 서버의 루트 디렉터리(또는 접근 가능한 경로)에 phpinfo() 함수를 포함한 PHP 파일을 생성합니다.
    <?php
    phpinfo();
    ?>
  2. 웹 브라우저를 통해 해당 파일에 접속합니다.
  3. 페이지 내에서 sqlsrv 항목을 검색합니다.
  4. sqlsrv 섹션이 나타나고 드라이버 정보가 표시된다면 모듈이 정상적으로 로드된 것입니다.

주의사항

  • 만약 sqlsrv 항목이 보이지 않는다면 php.ini 파일이 올바르게 로드되었는지, 설정한 extension 경로와 파일명이 정확한지 다시 확인해야 합니다.
  • 명령줄 환경(CLI)에서 확인하려면 터미널에서 php -m 명령어를 실행하여 목록에 sqlsrv 및 pdo_sqlsrv가 포함되어 있는지 확인할 수 있습니다.

상황별 판단 가이드

  • 내 상황: PHP 5.3 이상 환경에서 기존 php_mssql.dll 드라이버 사용 불가 및 MSSQL 연동 필요
  • 선택 기준: 사용 중인 PHP 버전, 아키텍처(32/64bit), 스레드 안전(TS/NTS) 여부를 확인하여 적합한 드라이버 파일 선택(phpinfo()에서 Thread Safety 항목 확인)
  • 다음 행동: php.ini 백업 → 확장 디렉터리에 드라이버 파일 배치 → php.ini에 extension 설정 추가 → 웹 서버 재시작 → phpinfo()로 모듈 로드 확인

실전 FAQ

  • Q. 설정 후에도 모듈이 로드되지 않는다면?
    • phpinfo()에서 Loaded Configuration File 항목이 올바른 php.ini 경로를 가리키는지 확인하세요. 'no value'로 표시되면 설정 파일 자체가 로드되지 않은 상태입니다.
  • Q. TS(Thread Safe)와 NTS(Non-Thread Safe)는 어떻게 구분하나요?
    • phpinfo()의 Thread Safety 항목을 확인하세요. 'enabled'이면 TS, 'disabled'이면 NTS입니다. 웹 서버 환경(IIS는 보통 TS, Apache는 NTS)에 따라 드라이버 파일명도 달라지므로 반드시 일치시켜야 합니다.
  • Q. 기존 연동 코드 수정이 필요한가요?
    • 네, mssql_로 시작하는 구버전 함수는 더 이상 작동하지 않습니다. sqlsrv_connect 등 새로운 API 규격으로 코드를 변경해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.