データベース · 1 min read · Oct 25, 2025
Debian Etch から ODBC と FreeTDS を使用して MSSQL データベースに PHP アクセス
Debian Etch から ODBC と FreeTDS を使用して MSSQL データベースに PHP アクセス
この手順では、すでに Apache2 と PHP5 がシステムに適切に設定されていることを前提としています。私がこの接続を動作させるために行った努力は、www.unixodbc.org と www.freetds.org で見つけた情報を基にまとめたものです。これらの手順は、2007 年 10 月に Debian Etch ステーブルで php5 を実行している Apache2 ウェブサーバーで私にとって機能しました。SQL サーバーは、Windows 2003 Server OS 上で Microsoft SQL 2005 を実行しています。
これらの手順では、root アカウントに su していると仮定しています。また、私は joe をエディタとして使用しているので、お好みのエディタに置き換えてください。
まず、必要なパッケージをインストールします:
#apt-get install tdsodbc libct3 unixodbc php5-odbcこれにより、unixODBC、FreeTDS、および php5 用の odbc 拡張がダウンロードされ、インストールされるはずです。
次に、FreeTDS の ODBC ドライバを登録し、FreeTDS の ODBC DSN を作成するためのテンプレートを作成します。これらのファイルは、実際にシステムを構成するために “odbcinst” を使用するので、好きな場所に置くことができます。私はそれらを tds 構成ファイルがある /etc/freetds に置くことにしました。
ODBC ドライバの登録:
#joe /etc/freetds/tds.driver.template次に、これをエディタに貼り付けます:
[TDS]
Description = FreeTDS Driver for Linux & MSSQL on Win32
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so次に DSN を作成します:
#joe /etc/freetds/tds.dsn.template次に、これをエディタに貼り付けます:
[DSN_NAME]
Description = Test to freeTDS
Driver = TDS
Trace = No
Database = DefaultDatabase [replace with your database name]
Server = mysqlserver.inter.net [replace with your SQL server's host]
Port = 5050 [replace with the port that SQL is listening on]さて、これらのテンプレートを unixODBC システムに挿入する必要があります:
#odbcinst -i -d -f /etc/freetds/tds.driver.template#odbcinst -i -s -f /etc/freetds/tds.dsn.templateこの時点で私が直面した問題は、DSN が root アカウントの個人 odbc 設定にインストールされたことです。www-data としてログインして dsn インストールコマンドを実行できないため、単に root の .odbc ファイルを /etc/odbc.ini にコピーしました。これは、すべてのユーザーが参照できるシステム全体の DSN ファイルです。
#mv /etc/odbc.ini /etc/odbc.ini.bak [他のものがあった場合に備えて]#cp /root/.odbc.ini /etc/odbc.ini次に、php.ini ファイルを編集して php で odbc 拡張を有効にする必要があります。カスタムビルドやインストールを行っていない限り、php ini ファイルは /etc/php5/apache2/ ディレクトリにあるはずですので:
#joe /etc/php5/apache2/php.iniベストプラクティスとして、php.ini ファイルの拡張セクションにこれを追加することをお勧めします:
extension = odbc.so次に、php の変更をシステムに反映させるために Apache を再起動する必要があります。
#/etc/init.d/apache2 restartこれで完了です。MSSQL マシンへの接続があると仮定すると、isql を使用してこの設定をテストできるはずです。上記の設定とユーザー名 Bob、パスワード Marley を使用して、テストは次のようになります:
#isql -v DSN_NAME Bob MarleySQL> プロンプトが表示され、任意の選択または他のコマンドを実行できます。次に PHP 部分に進みます。必要なことは、(再度上記の例を仮定して)接続情報を php ファイルに追加し、コーディングを開始することです。以下は、もちろんあなたの意のままに変更する必要がある基本的な例です。
問題が発生した場合は、基本的なネットワークトラブルシューティングから始めてください。Debian ボックスからサーバーに ping を送信できることを確認してください。MSSQL がリッスンしているサーバーとポートに telnet で接続してみてください。うまくいけば、抜け出す必要のある空白の画面が表示されるはずです。その後、isql の例が機能するが PHP 接続が機能しない場合は、どこに指摘すればよいかわかりません。
頑張ってください!
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。