PHP, MSSQL, ODBC · 2 min read · Oct 25, 2025
Debian Etch에서 ODBC 및 FreeTDS를 사용하여 MSSQL 데이터베이스에 대한 PHP 액세스
Debian Etch에서 ODBC 및 FreeTDS를 사용하여 MSSQL 데이터베이스에 대한 PHP 액세스
이 문서는 시스템에 Apache2와 PHP5가 올바르게 설정되어 있다고 가정합니다. 이 연결을 작동시키기 위한 노력은 www.unixodbc.org와 www.freetds.org에서 찾은 정보를 바탕으로 작성되었습니다. 이 단계는 2007년 10월 Debian Etch 안정 버전에서 php5가 실행되는 Apache2 웹 서버에서 저에게 효과적이었습니다. SQL 서버는 Windows 2003 Server OS에서 Microsoft SQL 2005를 실행하고 있습니다.
이 지침에서는 root 계정으로 su를 했다고 가정합니다. 또한 joe를 편집기로 사용하므로 원하는 편집기로 교체하십시오.
먼저 필요한 패키지를 설치합니다:
#apt-get install tdsodbc libct3 unixodbc php5-odbc이 명령은 unixODBC, FreeTDS 및 php5용 odbc 확장을 다운로드하고 설치합니다.
다음으로 FreeTDS용 ODBC 드라이버를 등록하고 FreeTDS용 ODBC DSN을 생성하기 위한 템플릿을 만듭니다. 이 파일은 시스템을 실제로 구성하는 데 사용할 “odbcinst”를 사용할 것이므로 원하는 위치에 두어도 됩니다. 저는 tds 구성 파일이 있는 /etc/freetds에 두기로 했습니다.
ODBC 드라이버 등록:
#joe /etc/freetds/tds.driver.template그런 다음 편집기에 다음 내용을 붙여넣습니다:
[TDS]
Description = Linux 및 Win32에서 MSSQL을 위한 FreeTDS 드라이버
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so이제 DSN:
#joe /etc/freetds/tds.dsn.template그런 다음 편집기에 다음 내용을 붙여넣습니다:
[DSN_NAME]
Description = freeTDS 테스트
Driver = TDS
Trace = No
Database = DefaultDatabase [데이터베이스 이름으로 교체]
Server = mysqlserver.inter.net [SQL 서버의 호스트로 교체]
Port = 5050 [SQL이 수신 대기하는 포트로 교체]이제 이 템플릿을 unixODBC 시스템에 삽입해야 합니다:
#odbcinst -i -d -f /etc/freetds/tds.driver.template#odbcinst -i -s -f /etc/freetds/tds.dsn.template이 시점에서 제가 겪었던 문제는 DSN이 root 계정의 개인 odbc 설정에 설치되었다는 것입니다. www-data로 로그인하여 dsn 설치 명령을 실행할 수 없으므로 root의 .odbc 파일을 /etc/odbc.ini로 복사했습니다. 이는 모든 사용자가 참조할 수 있는 시스템 전체 DSN 파일입니다.
#mv /etc/odbc.ini /etc/odbc.ini.bak [다른 파일이 있는 경우]#cp /root/.odbc.ini /etc/odbc.ini이제 php.ini 파일을 편집하여 php에서 odbc 확장을 활성화해야 합니다. 사용자 정의 빌드나 설치를 하지 않았다면 php ini 파일은 /etc/php5/apache2/ 디렉토리에 있어야 하므로:
#joe /etc/php5/apache2/php.ini모범 사례는 php.ini 파일의 확장 섹션에 다음을 추가하는 것입니다:
extension = odbc.so이제 시스템에 php 변경 사항을 적용하기 위해 Apache를 재시작해야 합니다.
#/etc/init.d/apache2 restart그게 전부입니다. MSSQL 머신에 연결할 수 있다고 가정하면 isql을 사용하여 이 설정을 테스트할 수 있어야 합니다. 위의 설정과 사용자 이름 Bob, 비밀번호 Marley를 사용하여 테스트를 진행합니다:
#isql -v DSN_NAME Bob MarleySQL> 프롬프트가 표시되며 원하는 모든 select 또는 기타 명령을 실행할 수 있습니다. 이제 PHP 부분으로 넘어갑니다. 위의 예를 가정하면 연결 정보를 php 파일에 추가하고 코딩을 시작하면 됩니다. 다음은 기본 예제이며, 물론 필요에 따라 수정해야 합니다.
문제가 발생하면 기본 네트워크 문제 해결부터 시작하십시오. Debian 박스에서 서버에 ping을 보낼 수 있는지 확인하십시오. MSSQL이 수신 대기하는 서버와 포트에 telnet을 시도해 보십시오. 작동하면 나가야 하는 빈 화면이 표시됩니다. 그 후 isql 예제가 작동하지만 PHP 연결이 작동하지 않으면 어디로 가야 할지 잘 모르겠습니다.
행운을 빕니다!
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.