Microsoft Drivers for PHP for SQL Server の Linux および macOS インストール チュートリアル
次の手順では、クリーンな環境が想定されています。Ubuntu、Red Hat、Debian、SUSE、Alpine、および macOS に PHP 8.1、Microsoft ODBC ドライバー、Apache Web サーバー、および Microsoft SQL Server 用 Drivers for PHP をインストールする方法について説明します。 これらの手順では、PECL を使用してドライバーをインストールすることをお勧めしていますが、Microsoft Drivers for PHP for SQL Server GitHub プロジェクト ページから事前構築済みバイナリをダウンロードし、「Microsoft Drivers for PHP for SQL Server の読み込み」の手順に従ってそれらをインストールすることもできます。 拡張機能の読み込みおよび php.ini に拡張機能を追加しない理由の説明については、ドライバーの読み込みに関するセクションを参照してください。
次の手順では、PHP 8.1 パッケージが使用可能な場合に、既定で pecl install
を使用して PHP 8.1 をインストールします。 最初に pecl channel-update pecl.php.net
を実行することが必要な場合があります。 サポートされている一部の Linux ディストリビューションでは、既定で PHP 7.1 が設定されますが、これは最新バージョンの SQL Server 用 PHP ドライバーではサポートされていません。 各セクションの先頭にある注記を参照して、代わりに PHP 8.2 または 8.3 をインストールしてください。
Ubuntu に PHP FastCGI Process Manager (PHP FPM) をインストールする手順も記載されています。 Apache ではなく nginx Web サーバーを使用する場合は、PHP-FPM が必要です。
これらの手順には SQLSRV ドライバーと PDO_SQLSRV ドライバーの両方をインストールするコマンドが含まれていますが、ドライバーは非依存でインストールし、機能できます。 構成のカスタマイズになれているユーザーは、SQLSRV または PDO_SQLSRV をだけを対象にしてこれらの手順を調整できます。 いずれのドライバーにも、下記に別途記載する部分を除き、同じ依存関係が与えられます。
サポートされている最新のオペレーティング システムのバージョンについては、サポート マトリックスに関する記事を参照してください。
Note
最適なパフォーマンスとセキュリティを確保するために、最新バージョンの ODBC ドライバーをインストールしていることを確認します。 インストールの手順については、「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」または「Microsoft ODBC Driver for SQL Server をインストールする (macOS)」を参照してください。
Ubuntu へのインストール
Note
PHP 8.2 または 8.3 をインストールするには、次のコマンドの 8.1 を 8.2 または 8.3 に置き換えます。
ステップ 1. PHP をインストールする (Ubuntu)
sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.1 php8.1-dev php8.1-xml -y --allow-unauthenticated
手順 2. 必須コンポーネントをインストールする (Ubuntu)
「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」の手順に従って、Ubuntu 用 ODBC ドライバーをインストールします。 必ず unixodbc-dev
パッケージもインストールします。 これは、PHP ドライバーをインストールするために pecl
コマンドによって使用されます。
sudo apt-get install unixodbc-dev
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (Ubuntu)
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
システムに PHP バージョンが 1 つしかない場合は、最後の手順を phpenmod sqlsrv pdo_sqlsrv
に簡略化できます。
手順 4. Apache をインストールし、ドライバーの読み込みを構成する (Ubuntu)
sudo su
apt-get install libapache2-mod-php8.1 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.1
exit
手順 5. Apache を再起動し、サンプル スクリプトをテストする (Ubuntu)
sudo service apache2 restart
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
PHP-FPM がインストールされた Ubuntu へのインストール
Note
PHP 8.2 または 8.3 をインストールするには、次のコマンドの 8.1 を 8.2 または 8.3 に置き換えます。
ステップ 1. PHP をインストールする (PHP-FPM がインストールされた Ubuntu)
sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.1 php8.1-dev php8.1-fpm php8.1-xml -y --allow-unauthenticated
以下を実行して、PHP-FPM サービスの状態を確認します。
systemctl status php8.1-fpm
手順 2. 必須コンポーネントをインストールする (PHP-FPM がインストールされた Ubuntu)
「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」の手順に従って、Ubuntu 用 ODBC ドライバーをインストールします。 必ず unixodbc-dev
パッケージもインストールします。 これは、PHP ドライバーをインストールするために pecl
コマンドによって使用されます。
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (PHP-FPM がインストールされた Ubuntu)
sudo pecl config-set php_ini /etc/php/8.1/fpm/php.ini
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
システムに PHP バージョンが 1 つしかない場合は、最後の手順を phpenmod sqlsrv pdo_sqlsrv
に簡略化できます。
sqlsrv.ini
と pdo_sqlsrv.ini
が /etc/php/8.1/fpm/conf.d/
に配置されていることを確認します。
ls /etc/php/8.1/fpm/conf.d/*sqlsrv.ini
PHP-FPM サービスを再起動します。
sudo systemctl restart php8.1-fpm
手順 4. nginx をインストールして構成する (PHP-FPM がインストールされた Ubuntu)
sudo apt-get update
sudo apt-get install nginx
sudo systemctl status nginx
nginx を構成するには、/etc/nginx/sites-available/default
ファイルを編集する必要があります。 # Add index.php to the list if you are using PHP
というセクションの下にある一覧に index.php
を追加します。
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
次に、以下のように # pass PHP scripts to FastCGI server
に続くセクションのコメントを解除して変更します。
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
手順 5. nginx を再起動し、サンプル スクリプトをテストする (PHP-FPM がインストールされた Ubuntu)
sudo systemctl restart nginx.service
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
Red Hat へのインストール
手順 1. PHP をインストールする (Red Hat)
PHP を Red Hat 7 にインストールするには、次のコマンドを実行します。
Note
PHP 8.2 または 8.3 をインストールするには、次のコマンドの remi-php81 を remi-php82 または remi-php83 に置き換えます。
sudo su
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum install yum-utils
yum-config-manager --enable remi-php81
yum update
# Note: The php-pdo package is required only for the PDO_SQLSRV driver
yum install php php-pdo php-pear php-devel
PHP を Red Hat 8 にインストールするには、次のコマンドを実行します。
Note
PHP 8.2 または 8.3 をインストールするには、次のコマンドの remi-8.1 を remi-8.2 または remi-8.3 に置き換えます。
sudo su
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install yum-utils
dnf module reset php
dnf module install php:remi-8.1
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
dnf update
# Note: The php-pdo package is required only for the PDO_SQLSRV driver
dnf install php-pdo php-pear php-devel
ステップ 2. 必須コンポーネントをインストールする (Red Hat)
「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」の手順に従って、Red Hat 7 または 8 用の ODBC ドライバーをインストールします。 必ず unixodbc-dev
パッケージもインストールします。 これは、PHP ドライバーをインストールするために pecl
コマンドによって使用されます。
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (Red Hat)
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini
exit
Remi リポジトリからインストールすることもできます。
sudo yum install php-sqlsrv
手順 4. Apache をインストールする (Red Hat)
sudo yum install httpd
SELinux は既定でインストールされ、Enforcing モードで実行します。 Apache が SELinux 経由でデータベースに接続できるようにするには、次のコマンドを実行します。
sudo setsebool -P httpd_can_network_connect_db 1
手順 5. Apache を再起動し、サンプル スクリプトをテストする (Red Hat)
sudo apachectl restart
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
Debian へのインストール
Note
PHP 8.2 または 8.3 をインストールするには、次のコマンドの 8.1 を 8.2 または 8.3 に置き換えます。
ステップ 1. PHP をインストールする (Debian)
sudo su
apt-get install curl apt-transport-https
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update
apt-get install -y php8.1 php8.1-dev php8.1-xml php8.1-intl
手順 2. 必須コンポーネントをインストールする (Debian)
「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」の手順に従って、Debian 用 ODBC ドライバーをインストールします。 必ず unixodbc-dev
パッケージもインストールします。 これは、PHP ドライバーをインストールするために pecl
コマンドによって使用されます。
また、PHP の出力をブラウザーで正しく表示させるために、正しいロケールを生成する必要がある場合もあります。 たとえば、en_US UTF-8 ロケールの場合、次のコマンドを実行します。
sudo su
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen
$PATH
への /usr/sbin
の追加が必要になる場合があります。これは locale-gen
実行可能ファイルがその場所に配置されるためです。
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (Debian)
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
システムに PHP バージョンが 1 つしかない場合は、最後の手順を phpenmod sqlsrv pdo_sqlsrv
に簡略化できます。 locale-gen
と同様に、phpenmod
も /usr/sbin
に配置されるため、このディレクトリの $PATH
への追加が必要になる場合があります。
手順 4. Apache をインストールし、ドライバーの読み込みを構成する (Debian)
sudo su
apt-get install libapache2-mod-php8.1 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.1
手順 5. Apache を再起動し、サンプル スクリプトをテストする (Debian)
sudo service apache2 restart
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
SUSE へのインストール
Note
次の手順で、<SuseVersion>
を使用している SUSE のバージョンで置き換えます。SUSE Linux Enterprise Server 15 を使用している場合は、SLE_15_SP3 または SLE_15_SP4 (またはそれ以上) になります。 SUSE 12 の場合は、SLE_12_SP5 (またはそれ以上) を使用します。 SUSE Linux のすべてのバージョンで、PHP のすべてのバージョンが利用できるわけではありません。http://download.opensuse.org/repositories/devel:/languages:/php
を参照して、SUSE のどのバージョンで既定のバージョンの PHP を使用できるか確認するか、または http://download.opensuse.org/repositories/devel:/languages:/php:/
を確認して、PHP のその他のどのバージョンが SUSE のどのバージョンで使用できるかを確認してください。
Note
現時点では、PHP 7.4 以上用のパッケージを SUSE 12 で使用することはできません。
手順 1. PHP をインストールする (SUSE)
sudo su
zypper -n ar -f https://download.opensuse.org/repositories/devel:languages:php/<SuseVersion>/devel:languages:php.repo
zypper --gpg-auto-import-keys refresh
zypper -n install php8 php8-pdo php8-devel php8-openssl
手順 2. 必須コンポーネントをインストールする (SUSE)
「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」の手順に従って、SUSE 用 ODBC ドライバーをインストールします。 必ず unixodbc-dev
パッケージもインストールします。 これは、PHP ドライバーをインストールするために pecl
コマンドによって使用されます。
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (SUSE)
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/sqlsrv.ini
exit
手順 4. Apache をインストールし、ドライバーの読み込みを構成する (SUSE)
sudo su
zypper install apache2 apache2-mod_php8
a2enmod php8
echo "extension=sqlsrv.so" >> /etc/php8/apache2/php.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php8/apache2/php.ini
exit
手順 5. Apache を再起動し、サンプル スクリプトをテストする (SUSE)
sudo systemctl restart apache2
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
Alpine へのインストール
Note
PHP 8.1 以降は、Alpine のテストまたはエッジ リポジトリから入手できる場合があります。 代わりに、ソースから PHP をコンパイルできます。
手順 1. PHP をインストールする (Alpine)
Alpine 用の PHP パッケージは、edge/community
リポジトリにあります。 WIKI ページで「コミュニティ リポジトリの有効化」を確認してください。 次の行の <mirror>
を Alpine リポジトリ ミラーの URL に置き換えて、/etc/apk/repositories
に追加します。
http://<mirror>/alpine/edge/community
次に、次のコマンドを実行します。
sudo su
apk update
# Note: The php*-pdo package is required only for the PDO_SQLSRV driver
# For PHP 7.*
apk add php7 php7-dev php7-pear php7-pdo php7-openssl autoconf make g++
# For PHP 8.*
apk add php8 php8-dev php8-pear php8-pdo php8-openssl autoconf make g++
# The following symbolic links are optional but useful
ln -s /usr/bin/php8 /usr/bin/php
ln -s /usr/bin/phpize8 /usr/bin/phpize
ln -s /usr/bin/pecl8 /usr/bin/pecl
ln -s /usr/bin/php-config8 /usr/bin/php-config
手順 2. 必須コンポーネントをインストールする (Alpine)
「Microsoft ODBC Driver for SQL Server をインストールする (Linux)」の手順に従って、Alpine 用 ODBC ドライバーをインストールします。 必ず unixodbc-dev
パッケージ (sudo apk add unixodbc-dev
) もインストールします。 これは、PHP ドライバーをインストールするために pecl
コマンドによって使用されます。
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (Alpine)
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/10_pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20_sqlsrv.ini
手順 4. Apache をインストールし、ドライバーの読み込みを構成する (Alpine)
# For PHP 7.*
sudo apk add php7-apache2 apache2
# For PHP 8.*
sudo apk add php8-apache2 apache2
手順 5. Apache を再起動し、サンプル スクリプトをテストする (Alpine)
sudo rc-service apache2 restart
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
macOS へのインストール
brew がまだない場合は、次のようにそれをインストールします。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Note
PHP 8.2 または 8.3 をインストールするには、次のコマンドの php@8.1 をそれぞれ php@8.2 または php@8.3 に置き換えます。
ステップ 1. PHP をインストールする (macOS)
brew tap
brew tap homebrew/core
brew install php@8.1
PHP がパスに含まれるようになったはずです。 php -v
を実行して、正しいバージョンの PHP が実行されていることを確認します。 PHP がパスにないか、または正しいバージョンでない場合は、次のコマンドを実行します。
brew link --force --overwrite php@8.1
Apple M1 ARM64 を使用する場合は、次のようにパスを設定することが必要になる場合があります。
export PATH="/opt/homebrew/bin:$PATH"
手順 2. 必須コンポーネントをインストールする (macOS)
「Microsoft ODBC Driver for SQL Server をインストールする (macOS)」の手順に従って、macOS 用 ODBC ドライバーをインストールします。
Note
Apple M1 ARM64 ハードウェアを使用する場合は、エミュレーター Rosetta 2 を使用せずに、Microsoft ODBC driver 17.8 以上を直接インストールしてください。
さらに、GNU make ツールをインストールする必要がある場合があります。
brew install autoconf automake libtool
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (macOS)
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
Apple M1 ARM64 を使用する場合は、代わりに次の手順を実行します。
sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install sqlsrv
sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install pdo_sqlsrv
手順 4. Apache をインストールし、ドライバーの読み込みを構成する (macOS)
Note
最新の macOS 11.0 Big Sur には Apache 2.4 がプレインストールされていますが、Apple によって必要なスクリプトの一部も削除されています。 この問題を解決するには Homebrew 経由で Apache 2.4 をインストールしてから構成する必要がありますが、それはこのインストール ガイドの対象外となります。詳細な手順については、Apache または Homebrew を確認してください。
brew install apache2
Apache インストールの Apache 構成ファイルである httpd.conf
を検索するには、以下を実行します。
/usr/local/bin/apachectl -V | grep SERVER_CONFIG_FILE
次のコマンドを使用して、必要な構成を httpd.conf
に追加します。 必ず /usr/local/etc/httpd/httpd.conf
を前のコマンドで返されたパスに置き換えてください。
echo "LoadModule php7_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp7.so" >> /usr/local/etc/httpd/httpd.conf
(echo "<FilesMatch .php$>"; echo "SetHandler application/x-httpd-php"; echo "</FilesMatch>";) >> /usr/local/etc/httpd/httpd.conf
手順 5. Apache を再起動し、サンプル スクリプトをテストする (macOS)
sudo apachectl restart
インストールをテストするには、このドキュメントの最後の「インストールのテスト」を参照してください。
インストールのテスト
このサンプル スクリプトをテストするには、システムのドキュメント ルートに testsql.php というファイルを作成します。 このパスは、Ubuntu、Debian、および Red Hat では /var/www/html/
、SUSE では /srv/www/htdocs
、Alpine では /var/www/localhost/htdocs
、macOS では /usr/local/var/www
です。 次のスクリプトをそれにコピーし、該当する場合にサーバー、データベース、ユーザー名、およびパスワードを置き換えます。
SQLSRV の例
<?php
$serverName = "yourServername";
$connectionOptions = array(
"database" => "yourDatabase",
"uid" => "yourUsername",
"pwd" => "yourPassword"
);
function exception_handler($exception) {
echo "<h1>Failure</h1>";
echo "Uncaught exception: " , $exception->getMessage();
echo "<h1>PHP Info for troubleshooting</h1>";
phpinfo();
}
set_exception_handler('exception_handler');
// Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
die(formatErrors(sqlsrv_errors()));
}
// Select Query
$tsql = "SELECT @@Version AS SQL_VERSION";
// Executes the query
$stmt = sqlsrv_query($conn, $tsql);
// Error handling
if ($stmt === false) {
die(formatErrors(sqlsrv_errors()));
}
?>
<h1> Success Results : </h1>
<?php
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row['SQL_VERSION'] . PHP_EOL;
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
function formatErrors($errors)
{
// Display errors
echo "<h1>SQL Error:</h1>";
echo "Error information: <br/>";
foreach ($errors as $error) {
echo "SQLSTATE: ". $error['SQLSTATE'] . "<br/>";
echo "Code: ". $error['code'] . "<br/>";
echo "Message: ". $error['message'] . "<br/>";
}
}
?>
PDO_SQLSRV の例
<?php
try {
$serverName = "yourServername";
$databaseName = "yourDatabase";
$uid = "yourUsername";
$pwd = "yourPassword";
$conn = new PDO("sqlsrv:server = $serverName; Database = $databaseName;", $uid, $pwd);
// Select Query
$tsql = "SELECT @@Version AS SQL_VERSION";
// Executes the query
$stmt = $conn->query($tsql);
} catch (PDOException $exception1) {
echo "<h1>Caught PDO exception:</h1>";
echo $exception1->getMessage() . PHP_EOL;
echo "<h1>PHP Info for troubleshooting</h1>";
phpinfo();
}
?>
<h1> Success Results : </h1>
<?php
try {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['SQL_VERSION'] . PHP_EOL;
}
} catch (PDOException $exception2) {
// Display errors
echo "<h1>Caught PDO exception:</h1>";
echo $exception2->getMessage() . PHP_EOL;
}
unset($stmt);
unset($conn);
?>
ブラウザーで https://localhost/testsql.php
(macOS では https://localhost:8080/testsql.php
) をポイントします。 SQL Server または Azure SQL データベースに接続できるようになったはずです。 SQL のバージョン情報を示す成功メッセージが表示されない場合は、コマンド ラインからスクリプトを実行することで、いくつかの基本的なトラブルシューティングを行うことができます。
php testsql.php
コマンド ラインからの実行は成功するがブラウザーに何も表示されない場合は、Apache ログ ファイルを確認します。 その他のヘルプについては、サポート リソースに関するページを参照してください。
参照
Microsoft Drivers for PHP for SQL Server の概要