본문은 Linux 환경에 구성하는 방법이다.
Windows 환경에서 sqlsrv를 구성, php 코드로 mssql 서버에 접속하는 내용은 여기에서 다뤘다.
구성 환경
- Ubuntu 20.04 LTS 64bit
- Apache 2.4
- PHP 7.4
- MariaDB 10.3
아래 명령어를 그대로 따라하되, 20.04/prod.list 이 부분에 각자의 ubuntu 버전을 기입하도록 하자.
MSSQL ODBC 버전은 2022-12-14 현재 18.1.2.1 가 GA(general availability)라고 하니 고민 없이 18로 지정하자.
$ curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
$ curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
$ apt-get update
$ ACCEPT_EULA=Y apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev
$ apt install unixodbc-dev
$ apt install php-pear
$ pecl install sqlsrv
$ pecl install pdo_sqlsrv
이제 php.ini 파일에 extension 을 아래와 같이 추가한다.
extension 추가 방법은 php설치경로/mods-available/ 폴더에 ini 파일을 만드는 방법도 있다. 본인의 선택.
extension=sqlsrv.so
extension=pdo_sqlsrv.so
이제 아파치를 재시작하고 테스트 코드를 실행해 볼 차례이다.
<?
$conn_info = array("Database" => MSSQL_DB,
"UID" => MSSQL_USER,
"PWD" => MSSQL_PASSWORD,
"CharacterSet" => "UTF-8",
"Encrypt" => false, // SSL 통신 off
"TrustServerCertificate" => false // SSL 통신 off
);
$conn = sqlsrv_connect(MSSQL_HOST, $conn_info) or die( print_r( sqlsrv_errors(), true));
$query = "SELECT TOP 10 * FROM user";
$result = sqlsrv_query($conn, $query);
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
print_r($row);
}
?>
코드에서 주석 처리한 SSL 통신 off 설정을 빼 먹는다면 아래 오류가 발생할 수 있다.
이는 공인 인증서, 하다 못해 사설 인증서라도 서버와 아파치에 적용되어 SSL 통신이 가능해야 함을 의미한다.
내부 개발 또는 테스트가 목적이라면 그냥 off 시키는게 편하다.
Error Message
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate
오류 메시지 처리
Error Message
sh: 1: phpize: not found
ERROR: `phpize' failed
phpize 가 없어서 발생. 간단히 apt install php-dev 하면 해결 된다.
Error Message
/tmp/pear/temp/sqlsrv/shared/xplat.h:30:10: fatal error: sql.h: No such file or directory
순서대로 따라했다면 발생하지 않았겠지만, apt install unixodbc-dev 이걸 안하면 발생한다.
참고문헌 및 관련링크.
'코딩 > PHP' 카테고리의 다른 글
PHP - date 함수 인자 정리 (Y-m-d 등) (0) | 2023.01.30 |
---|---|
자주 쓰는 것들 (1) | 2023.01.19 |
[PHP] 초성/자음 추출 함수 (1) | 2022.10.04 |
VScode Extension - PHP IntelliSense 설정 (1) | 2022.09.22 |
PHP - sqlsrv 함수 사용 시 주의 사항 (0) | 2022.08.09 |