[PHP-users 8826] Re: MSSQL につなぐには
Yasushi Matsuura
php-users@php.gr.jp
Tue, 23 Jul 2002 03:25:53 +0900 (JST)
Mon, 22 Jul 2002 15:07:25 +0900 に
"KAWAI,Takanori" <GCD00051@nifty.ne.jp> さんから届いた
『[PHP-users 8815] Re: MSSQL につなぐには』 について...
どうもまつうらです。
> 川合孝典です。
>
(中略)
> > ということで、PEAR 経由のアクセスは Windows からしかできない、
> > ということではないでしょうか。
> 過去ログの
> [PHP-users 7546] PEAR & MSSQL & FreeTDS
> http://ns1.php.gr.jp/pipermail/php-users/2002-May/007554.html
> そして
> [PHP-users 7556] Re: PEAR & MSSQL & FreeTDS
> http://ns1.php.gr.jp/pipermail/php-users/2002-May/007564.html
>
> によれば、まつうらさんはDebianからFreeTDS経由でアクセス
> できたように思うのですが、いかがでしょう?
> #小細工しないとダメみたいですけど。
>
川合さんより御指摘のあったとおり、Debian環境 + PHP 4.1.2で
WindowsNT 4.0 + MS SQLServer 7.0 へのアクセスに成功しています。
Linux環境ではFreeTDS(http://www.freetds.org/)経由でのアクセスがいい感じです。
FreeTDSの環境設定は非常に簡単で、$FreeTDS_HOME/etc/interfaceにサーバの
諸情報を記述するだけで、基本的にアクセスができています。
# $FreeTDS_HOMEはインストールしたパスを指しているつもりです。
例)
myserver
query tcp ether server1 1433
master tcp ether server1 1433
※myserverは同設定のラベルですので、なんでもいいです。
※server1がNTのホスト名、1433がTDSのポート番号です。
なお、余談ですが、FreeTDSがきちんとインストールされているかをチェックするのに
sqsh(http://www.sqsh.org/)を使うという面白い方法があります。
これは、UNIX版isqlのようなもので、コマンドラインのクライアントです。
例)
$ sqsh -S server1 -U user -P passwd -D Admin
1> select * from ActiveInfo
2> \go
PHPで使用するには、php.iniに以下のような設定が必要でした。
sybase.interface_file = "$Freetds_HOME/etc/interfaces"
これで、とりあえずはmssql関数でも、sybase関数でも同様にアクセス可能です。
この記述のみそはサーバのところに先程$Freetds_HOME/etc/interfacesで
記述したラベル名を使うことです。
例)
$dbh = mssql_connect(myserver, user, passwd);
if (!$dbh) {
die("DB 接続エラー");
}
# DB選択
mssql_select_db(mdss, $dbh);
また、PEAR DBでの接続ですがこれはDB.phpの記述に訂正が必要でした。
やはり基本はmssql.so or mssql.dllを用意することが前提のようで、
FreeTDS経由の場合にこの存在チェックが邪魔をしていました。
詳細は以下を御覧ください。
> [PHP-users 7556] Re: PEAR & MSSQL & FreeTDS
> http://ns1.php.gr.jp/pipermail/php-users/2002-May/007564.html
以上、御役に立てれば幸いです。
----------------------------------------------------------
まつうら@xdsl <vfr@ru.xdsl.ne.jp>
pgp public key: http://www.xdsl.ne.jp/ru/vfr/pubkey.asc