Symfoware

Symfowareについての考察blog

DB2 10.5にDebian + PHP5から接続する

CentOS 6.5にDB2 10.5をインストールしてみました。
CentOS 6.5にDB2 10.5 Express-Cをインストールする

Debian + Apache2 + PHP5の環境から接続してみます。




Apache、PHPの準備



DebianにApacheとPHPをインストールします。


# apt-get install apache2
# apt-get install libapache2-mod-php5




DB2に接続するモジュールをインストールするときに必要なものを追加でインストール。


# apt-get install php5-dev
# apt-get install make




インストールはこちらを参考に行いました。
http://www.php.net/manual/ja/ibm-db2.installation.php

説明の中で「pecl」というキーワードが出てきますが、これがよくわからなかった。
「php-pear」をインストールすると、合わせて「pecl」がインストールされます。


# apt-get install php-pear




これで準備OKです。





接続ドライバ



PythonでDB2に接続するとき「IBM Data Server Driver Package」をダウンロードしました。
DB2 10.5 Express-CにUbuntu + Pythonから接続する(ibm_db使用)

今回もこれが必要です。
ダウンロードサイトから
「ibm_data_server_driver_package_linuxx64_v10.5.tar.gz」
をダウンロードしておきます。


ダウンロードしたファイルを「/usr/local/src/」にコピーしました。
解凍します。


# cd /usr/local/src/
# tar zxf ibm_data_server_driver_package_linuxx64_v10.5.tar.gz




解凍して出来た「dsdriver」に移動。
bashでinstallDSDriverを実行します。
これでドライバの解凍が行われます。


# cd dsdriver/
# bash installDSDriver

-
- 'installDSDriver' script has started ...
-
- Unzipping and Copying each driver files to install path ...
--> SUCCESS
- Generating db2profile & db2cshrc files ...
- Generating db2profile32 & db2cshrc32 files ...
--> SUCCESS
- Performing post-installation clean up ...
--> SUCCESS
-
- 'installDSDriver' completed successfully.
- Check /usr/local/src/dsdriver/./installDSDriver.log file for complete details.
-




これでドライバが
「/usr/local/src/dsdriver」
に展開されました。







IBM DB2 関数



IBM DB2、Cloudscape および Apache Derby
こちらの関数が使えるようにします。


pecl install ibm_db2



でインストールを実行。

途中、ドライバを展開したパスの入力を求められるので
「/usr/local/src/dsdriver」と入力します。


# pecl install ibm_db2
downloading ibm_db2-1.9.5.tgz ...
Starting to download ibm_db2-1.9.5.tgz (157,720 bytes)
.................................done: 157,720 bytes
5 source files, building
running: phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:     20100525
Zend Extension Api No: 220100525
DB2 Installation Directory? : /usr/local/src/dsdriver
building in /tmp/pear/temp/pear-build-rootYxR7Ah/ibm_db2-1.9.5

(略)

Build process completed successfully
Installing '/usr/lib/php5/20100525/ibm_db2.so'
install ok: channel://pecl.php.net/ibm_db2-1.9.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=ibm_db2.so" to php.ini




これでインストール出来ました。
iniファイルを編集し、「ibm_db2.so」をロードするよう修正します。


# vi /etc/php5/conf.d/10-pdo.ini




以下の行を追記


extension=ibm_db2.so




Apacheを再起動


# /etc/init.d/apache2 restart




phpinfoを表示してみると、ibm_db2が認識されました。

374_01.png





接続テスト



http://www.php.net/manual/ja/function.db2-connect.php
ここのサンプルのまんまですが、こんなプログラムで接続を確認しました。


  1. <?php
  2. $database = 'SAMPLE';
  3. $user = 'db2inst1';
  4. $password = 'P@ssw0rd';
  5. $hostname = '192.168.1.103';
  6. $port = 50000;
  7. $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
  8. "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
  9. $conn = db2_connect($conn_string, '', '');
  10. if ($conn) {
  11.     echo "接続に成功しました。";
  12.     db2_close($conn);
  13. }
  14. else {
  15.     echo "接続に失敗しました。";
  16. }




上手くインストールできているようです。

374_02.png






データの登録、検索



こんなテーブルを作成しておきます。


CREATE TABLE test (id int, name varchar(100))





データの登録、検索はこんな感じになりました。


  1. <?php
  2. $database = 'SAMPLE';
  3. $user = 'db2inst1';
  4. $password = 'P@ssw0rd';
  5. $hostname = '192.168.1.103';
  6. $port = 50000;
  7. $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
  8. "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
  9. $conn = db2_connect($conn_string, '', '');
  10. # 登録
  11. db2_exec($conn, "INSERT INTO test (id, name) VALUES(1, 'PHPから登録テスト')");
  12. # 登録したデータを検索
  13. $stmt = db2_exec($conn, "SELECT * FROM test");
  14. while ($row = db2_fetch_array($stmt)) {
  15.     echo $row[0] . '<br/>';
  16.     echo $row[1] . '<br/>';
  17. }
  18. db2_close($conn);




とりあえず動いてくれているようです。

374_03.png


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/03/16(日) 16:55:38|
  2. DB2
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PostgreSQL 9.3.2 画像データ登録で text vs. bytea | ホーム | DB2 10.5にPythonからXML列へデータを登録する(ibm_db使用)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1344-12c43f31
この記事にトラックバックする(FC2ブログユーザー)