次の手順では、クリーンな環境を想定し、PHP 8.1、Microsoft ODBC ドライバー、Apache Web サーバー、Microsoft Drivers for PHP for SQL Server を Ubuntu、Red Hat、Debian、SUSE、Alpine、macOS にインストールする方法を示します。 これらの手順では 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に固有に調整できます。 次に示す場合を除き、両方のドライバーに同じ依存関係があります。
サポートされているオペレーティング システムの最新バージョンについては、 サポート マトリックス を参照してください。
注
最適なパフォーマンスとセキュリティを確保するために、最新の ODBC ドライバー バージョンがインストールされていることを確認します。 インストール手順については、「 Microsoft ODBC driver for SQL Server (Linux) のインストール 」または「 Microsoft ODBC driver for SQL Server (macOS)」を参照してください。
Ubuntu へのインストール
注
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)
SQL Server 用 Microsoft ODBC ドライバーのインストール (Linux) に関する記事の手順に従って、Ubuntu 用 ODBC ドライバーをインストールします。
unixodbc-dev パッケージもインストールしてください。 これは、PHP ドライバーをインストールするために pecl コマンドによって使用されます。
sudo apt-get install unixodbc-dev
手順 3. Microsoft SQL Server (Ubuntu) 用の PHP ドライバーをインストールする
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 へのインストール
注
PHP 8.2 または 8.3 をインストールするには、次のコマンドで 8.1 を 8.2 または 8.3 に置き換えます。
ステップ 1. PHP をインストールする (Ubuntu と PHP-FPM)
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. 前提条件のインストール (Ubuntu と PHP-FPM)
SQL Server 用 Microsoft ODBC ドライバーのインストール (Linux) に関する記事の手順に従って、Ubuntu 用 ODBC ドライバーをインストールします。
unixodbc-dev パッケージもインストールしてください。 これは、PHP ドライバーをインストールするために pecl コマンドによって使用されます。
手順 3. Microsoft SQL Server 用 PHP ドライバーをインストールする (Ubuntu と PHP-FPM)
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 をインストールして構成する (Ubuntu with PHP-FPM)
sudo apt-get update
sudo apt-get install nginx
sudo systemctl status nginx
nginx を構成するには、 /etc/nginx/sites-available/default ファイルを編集する必要があります。
index.phpを示すセクションの下の一覧に# Add index.php to the list if you are using 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 を再起動し、サンプル スクリプトをテストします (Ubuntu with PHP-FPM)
sudo systemctl restart nginx.service
インストールをテストするには、このドキュメントの最後にある インストールのテスト を参照してください。
Red Hat へのインストール
ステップ 1. PHP のインストール (Red Hat)
Red Hat 7 に PHP をインストールするには、次のコマンドを実行します。
注
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
Red Hat 8 に PHP をインストールするには、次のコマンドを実行します。
注
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 へのインストール
注
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
/usr/sbin実行可能ファイルが存在するため、$PATHにlocale-genを追加する必要がある場合があります。
手順 3. Microsoft SQL Server (Debian) 用 PHP ドライバーをインストールする
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 へのインストール
注
次の手順では、 <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 のどのバージョンの SUSE に既定のバージョンの PHP が使用されているかを確認するか、 http://download.opensuse.org/repositories/devel:/languages:/php:/ 確認して、SUSE のバージョンに使用できる PHP の他のバージョンを確認してください。
注
現在、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)
SQL Server 用 Microsoft ODBC ドライバーのインストール (Linux) に関する記事の手順に従って、SUSE 用 ODBC ドライバーをインストールします。
unixodbc-dev パッケージもインストールしてください。 これは、PHP ドライバーをインストールするために pecl コマンドによって使用されます。
手順 3. Microsoft SQL Server (SUSE) 用の PHP ドライバーをインストールする
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 へのインストール
注
PHP 8.1 以降は、Alpine のテストまたはエッジ リポジトリから入手できます。 代わりに、ソースから PHP をコンパイルできます。
ステップ 1. PHP をインストールする (Alpine)
Alpine の PHP パッケージは、 edge/community リポジトリにあります。 WIKI ページで [コミュニティリポジトリを有効にする] をオンにします。 次の行を /etc/apk/repositoriesに追加し、 <mirror> を Alpine リポジトリ ミラーの URL に置き換えます。
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 (Alpine) 用の PHP ドライバーをインストールする
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)"
注
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 ドライバーをインストールします。
注
Apple M1 ARM64 ハードウェアを使用している場合は、エミュレーター Rosetta 2 を使用せずに Microsoft ODBC ドライバー 17.8 以降を直接インストールしてください。
さらに、GNU make ツールのインストールが必要になる場合があります。
brew install autoconf automake libtool
手順 3. Microsoft SQL Server (macOS) 用 PHP ドライバーをインストールする
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)
注
最新の macOS 11.0 Big Sur には Apache 2.4 がプレインストールされていますが、Apple ではいくつかの必要なスクリプトも削除されています。 解決策は、Homebrew を使用して Apache 2.4 をインストールしてから構成することですが、これはこのインストール ガイドの対象外であるため、詳細な手順については Apache または Homebrew を確認してください。
brew install apache2
Apache 構成ファイル httpd.conf、Apache インストール用に検索するには、次のコマンドを実行します。
/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 ログ ファイルを確認します。 詳細については、「移動する場所の サポート リソース 」を参照してください。
こちらもご覧ください
SQL Server 用 Microsoft Drivers for PHP の入門