2008年4月4日金曜日

PHP + MSSQL (Microsoft SQLServer)

環境:
CentOS 4.5
Apache-2.2.4
PHP-5.1.6 + Zend Optimizer v3.3.0
FreeTDS-0.64
libiconv-1.10 with JpPatch


CentOSのインストールは・・・
1.テキストインストールを基本とする。
2.パッケージは一切インストールしない。
とにかく余計なものはインストールしないことが基本です。
インストール後、開発ツールのみyumにてインストールしておきます。

OSのインストールができたところで必要なソフトをソースからインストールします。

●Webサーバのインストール
# wget http://archive.apache.org/dist/httpd/httpd-2.2.4.tar.gz
# tar zxvf ./httpd-2.2.4.tar.gz
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all
# make;make install
※Zend Optimizerを後でインストールするためMPMはpreforkとする(preforkのみ対応のため)

●libiconv 1.10 with JP-Patch
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.10.tar.gz
# wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-cp93.patch.gz
# gzip -dc libiconv-1.10.tar.gz tar xvf -
# cd libiconv-1.10
# gzip -dc ../libiconv-1.10-ja-1.patch.gz patch -p1
# ./configure
# make;make install
※参考ページhttp://www2d.biglobe.ne.jp/~msyk/software/index.html

●FreeTDS ※2008/04/04現在0.64が最新
# wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz

EUCJP-MSを使う必要がある場合
# wget http://www.komine.biz/downloads/freetds-0.64.patch
# patch -p0 < freetds-0.64.patch

# ./configure --with-msdblib --with-libiconv-prefix=/usr/local --prefix=/usr/local/freetds
# make;make install

DB接続情報の作成
# vi /usr/local/freetds/etc/freetds.conf
[SQL2005]
    host = DBServerIP
    port = 1433
    tds version = 8.0
    client charset = CP932

●PHP5.1.6
# tar zxvf php-5.1.6.tar.gz
# cd php-5.1.6
# ./configure
--with-apxs2=/usr/local/apache/bin/apxs
--enable-mbstring
--with-mssql=/usr/local/freetds
--enable-pdo=shared
--with-sqlite=shared
--with-pdo-sqlite=shared
--with-pdo-dblib=shared,/usr/local/freetds
--enable-calender
--with-xmlrpc=shared
# make;make install
# cp ./php.ini-dist /usr/local/lib/php.ini
# vi /usr/local/lib/php.ini
    output_buffering = off → 4096

    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo.so
    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo_dblib.so
    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/xmlrpc.so
    ;extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo_sqlite.so
    ;extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/sqlite.so

    date.timezone = Asia/Tokyo

    session.gc_maxlifetime = 1440 → 72000 (必要に応じて)
    session.cache_limiter = nocache → private

    [mbstring]
        mbstring.***のコメント解除
        ただしmbstring.http_output は SJIS → EUC-JPにする。

PEARモジュールのインストール
# pear install db date install

こんな感じで表示されます。↓
ok: channel://pear.php.net/Date-1.4.7 install
ok: channel://pear.php.net/DB-1.7.13

●Zend Optimizer
# gunzip -c ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz tar xf -
# cd ZendOptimizer-3.3.0-linux-glibc21-i386
# ./install あとは画面に沿って設定していく。

info.phpで以下の内容が表示されているか確認
「with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies」

●MSSQLへの接続テスト
ここではFreeTDS付属のtsqlを使ってテストしてみます。
# /usr/local/freetds/bin/tsql -S [SQL2005(freetds.conf定義)] -p [1433(port)] -U [DBユーザ]
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password: *****(DBユーザのパスワード)
(以下のようになるとログイン成功です)
1>
では実際にデータを取得してみる。
1>use DBNAME
2>select * from TBNAME
3>GO
データが表示されればOK


補足
SQLServer:SJIS
PHPソース:EUC-JP








0 件のコメント:

Google検索