질문을 제기했을 때
우리 회사는 China Unicom 130 SMS 서비스를 제공하기 위해 China Unicom의 SGIP 프로토콜을 기반으로 한 SP 측 단문 메시지 서비스 소프트웨어 세트를 개발했습니다. 이 시스템은 Windows 2000을 사용하고 있습니다. 데이터베이스는 Microsoft SQLServer2000을 사용하며 한동안 정상적으로 실행되었습니다. 최근에는 WEB에서 단문 메시지 사용자의 일부 정보를 제공하기 위해서는 WEB에서 SQL Server 데이터베이스를 읽고 쓰는 것이 필요합니다. 원래 SQL Server 데이터베이스의 가장 좋은 파트너는 Microsoft IIS ASP 서버 스크립트여야 하지만, 우리 회사는 항상 IIS+ASP의 안정성과 보안이 만족스럽지 않다고 생각했습니다. Linux에서 SQL Server를 읽고 쓰는 데 PHP 스크립트를 사용하고 싶습니다.
문제 분석
원래는 SQL Server에서 PHP 스크립트를 읽고 쓰는 데 문제가 없었으며, Windows용 Apache와 Windows IIS에서 매우 잘 작동하며, 일반적으로 모두 기성품인 ODBC나 SQLServer Client를 통해 연결 가능합니다. Windows에서. 그러나 Linux에는 기성 ODBC 및 SQLServer 클라이언트가 없으므로 직접 설치해야 합니다.
문제 해결
1. 관련 소프트웨어
freetds 출처: ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/freetds-0.53.tgz
이 소프트웨어는 Linux 및 Unix를 사용하여 MS SQLServer 및 Sybase 데이터베이스를 연결할 수 있습니다.
2. 설치 및 구성 단계
1단계: freetds 컴파일 및 설치:
freetds-0.53.tgz를 가져온 후
cp freetds-0.53.tgz /tmp/(freetds 패키지를 /tmp 디렉터리에 복사)
cd /tmp(디렉터리 입력) )
tar zxvf freetds- 0.53.tgz (압축 해제)
cd freetds-0.53 (압축 해제된 디렉터리 입력)
./configure –prefix=/usr/local/freetds --with-tdsver=7.0
gmake (Makefile 생성, 테스트했습니다. make도 가능합니다.)
gmake install (설치)
위의 구성에 대해 말씀드리고 싶습니다. --prefix=/usr/local/freetds는 /usr/local/freetds 디렉토리에 설치하는 것을 말합니다. 7.0은 tds 7.0 버전을 설치한다는 의미입니다(최신 문제는 이 컴파일 매개변수를 추가하지 않아서 결과가 기본적으로 5.0으로 컴파일되었다는 점입니다. 5.0에서 데이터베이스에 연결하기 위한 포트는 SQL Server의 1433이 아닌 4000입니다)
2단계: PHP4./configure
[--with-apxs --with-mysql ...] --with-sybase=/usr/local/freetds 재컴파일 (sybase임을 참고하세요)
make
make install
3단계: freetds 구성
vi /usr/local/freetds/etc/freetds.conf
특정 구성은 이 파일에서 찾을 수 있습니다. 설명 예
: (일반 구성)
[sqlserver]
호스트 = sql_server_name_or_host_ip (SQLServer 시스템 이름 또는 IP 주소)
port = 1433
tds 버전 = 7.0
이 구성 파일에서는 Windows 도메인 로그인 또는 SQLServer 계정 로그인의 두 가지 방법을 구성할 수 있습니다.
4단계: php.ini 파일을 구성
하고 Extension=mssql70.so
를
찾습니다.
5단계: php에서 데이터베이스 연결을 설정합니다.
$link=mssql_connect("sqlserver",$your_username,$your_password) 또는 die("데이터베이스에 연결할 수 없습니다")
echo
$link;
축하합니다. 링크 번호를 얻었습니다. 정의되지 않은 함수에 대한 호출: mssql_connect()가 나타나면 참고: 위의 설치 및 구성 프로세스를 주의 깊게 읽고 어떤 단계가 잘못되었는지 확인하세요.
참고: sqlserver 이름은 /usr/local/freetds/etc/freetds.conf에 정의된 호스트 매개변수입니다. IP 주소를 쓰면 IP 주소가 됩니다.
다른 데이터베이스 작업은 관련 mssql 함수를 참조하세요
. sql 문에서는 중국어가 지원되지 않습니다!!!
6단계: 디버깅.
연결이 되지 않으면 freetds 구성 파일에서 해당 내용을 찾아보세요. /freetds.log 앞의 세미콜론을 제거하고 테스트 스크립트를 다시 실행한 후 /tmp/freetds.log 파일을 확인하면 문제 해결에 도움이 되는 많은 오류 정보를 알 수 있습니다.
(e129)