Linux上のPHPから接続するデータベースといえば、MySQLやPostgreSQLが多いですけど、まれに、Microsoft SQL Serverに接続したいという要望があるかもしれないので自分メモ。
CentOS 7のPHP 7.2からMicrosoft SQL Serverに接続する方法
簡単でした。
ODBC Driver for SQL Serverのインストール
Microsoft謹製のLinux用の「ODBC Driver for SQL Server(msodbcsql)」というものを使います。
こちらからダウンロードできます。
ODBC Driver for SQL Server のダウンロード - ODBC Driver for SQL Server
SQL Server や Azure SQL Database に接続するネイティブ コード アプリケーションを開発するには、Microsoft ODBC Driver for SQL Server をダウンロードします。
OSはCentOS 7なので、「Red Hat 7 .rpm パッケージ」が使える(はず)。
「msodbcsql17」というのがありますが、こちらは使えません。
「msodbcsql-13」の最新バージョンをダウンロードしてインストールします。(この場合は「msodbcsql-13.1.9.2-1.x86_64.rpm」)
$ sudo yum localinstall https://packages.microsoft.com/rhel/7/prod/msodbcsql-13.1.9.2-1.x86_64.rpm
PHP 7.2のインストール
remiリポジトリをインストールして、そちらからPHP 7.2をインストールします。
$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
remiリポジトリからPHP 7.2をインストールします。SQL Serverに接続するためのパッケージである「php-sqlsrv」もインストールします。
$ sudo yum install --enablerepo=remi,remi-php72 php php-common php-cli php-mbstring php-gd php-pear php-pdo php-mcrypt php-xmlrpc php-soap php-devel php-intl php-xml php-sqlsrv
DSNの書き方
PDOを使ってPHPからSQL Serverに接続するためのDSNの書き方はPHPのマニュアルのページに載っていました。
PHP: PDO_SQLSRV DSN - Manual
<?php
$host = "192.168.0.10";
$dbname = "testdb";
$user = "sa";
$pass = "sa";
$conn = new PDO("sqlsrv:Server=$host;Database=$dbname", $user, $pass);