2016年9月15日木曜日

【Microsoft Azure】Microsoft Drivers 4.0.3 for PHP on Linux for SQL Server を Ubuntu16 に導入する

ちょっと前ですが、Linux上のPHP7.0からsqlsrv関数を使えるドライバーのテクニカルプレビューがリリースされています。
https://blogs.msdn.microsoft.com/sqlphp/2016/08/26/early-technical-preview-of-microsoft-drivers-4-0-3-for-php-on-linux-for-sql-server-released-2/?mkt_tok=eyJpIjoiWkRRek9EWTBabUkxWlRjeCIsInQiOiIwcm5Fa0tUUjhEandhNnBIaWlFRkJVUU8xa2ZHQ3VWdjZIU1N1a2FqWkhzY3dIY09iWW9pemdkMk95SlwvZGY0QU1XSWJGQVZVaDVkZG5MVk9acW5KcmR5VE9WeVpsQkxsWFZCTDExbDVzRHM9In0%3D

今までは、LinuxのPHPからSQL Server(Azure SQL Database)への接続はODBC経由のみでしたが、これで例えばWebAppsで動かすPHPアプリケーションをLinux上で開発することが簡単になります。

今回はUbuntu16.04 TLSへの導入までの手順を説明します。
おそらくリリース時にも大きな変更はないと思われるので、今後も参考になるかと。

以下のサイトからコンパイル済みのバイナリーをダウンロードして利用します。
https://github.com/Microsoft/msphpsql/releases/tag/v4.0.3-Linux

PHP7.0と確認用にApache2をインストールします。
# apt-get update
# apt-get -y install php7.0 php-odbc php7.0-cgi libapache2-mod-php7.0 unzip

ドライバーをダウンロードしてPHPのextension_dir(今回は/usr/lib/php/20151012)へコピーします。
# wget https://github.com/Microsoft/msphpsql/releases/download/v4.0.3-Linux/Ubuntu16.zip
unzip Ubuntu16.zip
cp Ubuntu16/*.so /usr/lib/php/20151012/

PHPの設定ファイルを作成して、ドライバーを読み込みます。
今回はApache2ですので「/etc/php/7.0/apache2/conf.d」以下にファイルを作成しますが、コマンドラインの場合は「/etc/php/7.0/cli/conf.d」、fpmの場合は「/etc/php/7.0/fpm/conf.d」以下に作成します。
# vi /etc/php/7.0/apache2/conf.d/20-sqlsrv.ini
extension=php_sqlsrv_7_nts.so
extension=php_pdo_sqlsrv_7_nts.so

ファイルを保存したらApache2を再起動します。
# service apache2 restart

phpinfoで確認すると、PDOの項目にsqlsrvがあります。















同様にsqlsrvの項目もあります。