MSSQL Linux + PHP 7 + SQL Server (MSSQL) 연결
페이지 정보
본문
php7.2 부터는 mssql_connect 함수가 바로 지원되지 않습니다. 그래서 다른 방법으로 mssql을 사용 해야 합니다.
sqlsrv를 사용해서 mssql을 사용하는 방법입니다.
레드헷(Centos), 우분투 , SUSE , MAC OS , 윈도우에서 설치가능하고
PHP 7.2 이상부터 설치가능합니다.
PHP 4, 5에서는 기본 제공하는 mssql_connect 함수를 사용하고 ,
php 7에서는 mssql_connect 함수가 삭제되어, MicroSoft 에서 제공하는 프로그램을 설치해서 사용합니다.
1. Microsoft Drivers for PHP for SQL Server 가이드
https://github.com/Microsoft/msphpsql
https://www.microsoft.com/en-us/sql-server/developer-get-started/
https://docs.microsoft.com/eu-es/sql/connect/php/microsoft-php-driver-for-sql-server?view=sql-server-ver15
2. Linux OS 종류 및 버전 확인
# /etc/*-release
3-1. Ubuntu 16.04
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
3-2. Ubuntu 18.04
----------------------------------------------------------------------------------------------------------------
※ 본 강좌는 정보공유 차원에서 정리되었습니다.
실제 운영서버에 설치해서 테스트를 진행했으나, 성공하지 못한 상황입니다.
계속적으로 업데이트를 진행할 예정이며, 온전하게 접속이 성공하면 본 메시지는 삭제될 예정입니다.
----------------------------------------------------------------------------------------------------------------
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list [ 엔터 ]
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 983 100 983 0 0 2047 0 --:--:-- --:--:-- --:--:-- 2043
OK
sudo apt-get update [ 엔터 ]
Get:1 https://packages.microsoft.com/ubuntu/18.04/prod bionic InRelease [4,002 B]
...
Fetched 369 kB in 2s (190 kB/s)
Reading package lists... Done
sudo ACCEPT_EULA=Y apt-get install msodbcsql17 [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Need to get 1,471 kB of archives.
After this operation, 1,486 kB of additional disk space will be used.
Do you want to continue? [Y/n] y [ 엔터 ]
Get:1 https://packages.microsoft.com/ubuntu/18.04/prod bionic/main amd64 libodbc1 amd64 2.3.7 [511 kB]
...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
sudo ACCEPT_EULA=Y apt-get install mssql-tools [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Unpacking mssql-tools (17.5.2.1-1) ...
Setting up mssql-tools (17.5.2.1-1) ...
------------------ 여기까지 테스트 완료 ------------------
sudo apt install php-pear [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Processing triggers for php7.2-fpm (7.2.24-0ubuntu0.18.04.6) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
sudo pecl install pdo_sqlsrv [ 엔터 ]
sudo apt-get install unixodbc-dev [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Need to get 28.5 MB of archives.
After this operation, 106 MB of additional disk space will be used.
Do you want to continue? [Y/n] y [ 엔터 ]
Get:1 https://packages.microsoft.com/ubuntu/18.04/prod bionic/main amd64 unixodbc-dev amd64 2.3.7 [37.1 kB]
...
Setting up libtool (2.4.6-2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
3-3. CentOS 7 / Red Hat
----------------------------------------------------------------------------------------------------------------
※ 본 강좌는 정보공유 차원에서 정리되었습니다.
실제 운영서버에 설치해서 테스트를 진행했으나, 성공하지 못한 상황입니다.
계속적으로 업데이트를 진행할 예정이며, 온전하게 접속이 성공하면 본 메시지는 삭제될 예정입니다.
----------------------------------------------------------------------------------------------------------------
sudo su
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo | sudo tee /etc/yum.repos.d/mssql-server-2017.repo [ 엔터 ]
sudo yum update [ 엔터 ]
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel [ 엔터 ]
sudo yum groupinstall "Development Tools" [ 엔터 ]
sudo pecl install sqlsrv [ 엔터 ]
sudo pecl install pdo_sqlsrv [ 엔터 ]
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
4. sqlsrv 설정하기
php.ini 파일에 아래 내용을 추가해 줍니다.
extension=sqlsrv.so
extension=pdo_sqlsrv.so
또는 /etc/php/7.0/mods-available 위치에 sqlsrv.ini 파일을 만들고 위 내용을 넣고,
/etc/php/7.0/fpm/conf.d 와 같이 conf.d 폴더에 심볼릭 링크를 연결해도 됩니다.
5. php restart
5-1. Ubuntu
// apache restart
sudo service apache2 restart
// ngix restart
sudo service nginx restart
5-1. CentOS
6. 사용해 보기
<?php
$serverName = "MSSQL_ip";
$connectionOptions = array(
"Database" => "MSSQL_name",
"Uid" => "MSSQL_id",
"PWD" => "MSSQL_password"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn) {
echo "Connected!<br>";
} else {
echo "sqlsrv_connect 접속 실패<br>";
}
$sql = " select * from 테이블 ";
echo $sql."<br>";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row[0]."<br>";
}
sqlsv_free_stmt($stmt);
?>
참고자료
https://xetown.com/tips/878320
https://gyuha.tistory.com/504
https://stackoverflow.com/questions/34377338/linux-php-7-0-and-mssql-microsoft-sql#41773998
https://docs.microsoft.com/ko-kr/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15
sqlsrv를 사용해서 mssql을 사용하는 방법입니다.
레드헷(Centos), 우분투 , SUSE , MAC OS , 윈도우에서 설치가능하고
PHP 7.2 이상부터 설치가능합니다.
PHP 4, 5에서는 기본 제공하는 mssql_connect 함수를 사용하고 ,
php 7에서는 mssql_connect 함수가 삭제되어, MicroSoft 에서 제공하는 프로그램을 설치해서 사용합니다.
1. Microsoft Drivers for PHP for SQL Server 가이드
https://github.com/Microsoft/msphpsql
https://www.microsoft.com/en-us/sql-server/developer-get-started/
https://docs.microsoft.com/eu-es/sql/connect/php/microsoft-php-driver-for-sql-server?view=sql-server-ver15
2. Linux OS 종류 및 버전 확인
# /etc/*-release
3-1. Ubuntu 16.04
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
3-2. Ubuntu 18.04
----------------------------------------------------------------------------------------------------------------
※ 본 강좌는 정보공유 차원에서 정리되었습니다.
실제 운영서버에 설치해서 테스트를 진행했으나, 성공하지 못한 상황입니다.
계속적으로 업데이트를 진행할 예정이며, 온전하게 접속이 성공하면 본 메시지는 삭제될 예정입니다.
----------------------------------------------------------------------------------------------------------------
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list [ 엔터 ]
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 983 100 983 0 0 2047 0 --:--:-- --:--:-- --:--:-- 2043
OK
sudo apt-get update [ 엔터 ]
Get:1 https://packages.microsoft.com/ubuntu/18.04/prod bionic InRelease [4,002 B]
...
Fetched 369 kB in 2s (190 kB/s)
Reading package lists... Done
sudo ACCEPT_EULA=Y apt-get install msodbcsql17 [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Need to get 1,471 kB of archives.
After this operation, 1,486 kB of additional disk space will be used.
Do you want to continue? [Y/n] y [ 엔터 ]
Get:1 https://packages.microsoft.com/ubuntu/18.04/prod bionic/main amd64 libodbc1 amd64 2.3.7 [511 kB]
...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
sudo ACCEPT_EULA=Y apt-get install mssql-tools [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Unpacking mssql-tools (17.5.2.1-1) ...
Setting up mssql-tools (17.5.2.1-1) ...
------------------ 여기까지 테스트 완료 ------------------
sudo apt install php-pear [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Processing triggers for php7.2-fpm (7.2.24-0ubuntu0.18.04.6) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
sudo apt-get install unixodbc-dev [ 엔터 ]
Reading package lists... Done
Building dependency tree
...
Need to get 28.5 MB of archives.
After this operation, 106 MB of additional disk space will be used.
Do you want to continue? [Y/n] y [ 엔터 ]
Get:1 https://packages.microsoft.com/ubuntu/18.04/prod bionic/main amd64 unixodbc-dev amd64 2.3.7 [37.1 kB]
...
Setting up libtool (2.4.6-2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
3-3. CentOS 7 / Red Hat
----------------------------------------------------------------------------------------------------------------
※ 본 강좌는 정보공유 차원에서 정리되었습니다.
실제 운영서버에 설치해서 테스트를 진행했으나, 성공하지 못한 상황입니다.
계속적으로 업데이트를 진행할 예정이며, 온전하게 접속이 성공하면 본 메시지는 삭제될 예정입니다.
----------------------------------------------------------------------------------------------------------------
sudo su
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo | sudo tee /etc/yum.repos.d/mssql-server-2017.repo [ 엔터 ]
sudo yum update [ 엔터 ]
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel [ 엔터 ]
sudo yum groupinstall "Development Tools" [ 엔터 ]
sudo pecl install sqlsrv [ 엔터 ]
sudo pecl install pdo_sqlsrv [ 엔터 ]
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
4. sqlsrv 설정하기
php.ini 파일에 아래 내용을 추가해 줍니다.
extension=sqlsrv.so
extension=pdo_sqlsrv.so
또는 /etc/php/7.0/mods-available 위치에 sqlsrv.ini 파일을 만들고 위 내용을 넣고,
/etc/php/7.0/fpm/conf.d 와 같이 conf.d 폴더에 심볼릭 링크를 연결해도 됩니다.
5. php restart
5-1. Ubuntu
// apache restart
sudo service apache2 restart
// ngix restart
sudo service nginx restart
5-1. CentOS
6. 사용해 보기
<?php
$serverName = "MSSQL_ip";
$connectionOptions = array(
"Database" => "MSSQL_name",
"Uid" => "MSSQL_id",
"PWD" => "MSSQL_password"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn) {
echo "Connected!<br>";
} else {
echo "sqlsrv_connect 접속 실패<br>";
}
$sql = " select * from 테이블 ";
echo $sql."<br>";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row[0]."<br>";
}
sqlsv_free_stmt($stmt);
?>
참고자료
https://xetown.com/tips/878320
https://gyuha.tistory.com/504
https://stackoverflow.com/questions/34377338/linux-php-7-0-and-mssql-microsoft-sql#41773998
https://docs.microsoft.com/ko-kr/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15
댓글목록
등록된 댓글이 없습니다.