|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|

プログラミングのお勉強Blog/2005年09月24日/PHP 5.0.4 から Firebird 1.5 へのアクセス環境構築

    
※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

#blognavi
PHPはFirebirdへの接続機能が組み込まれているらしい。
ということで、環境を構築してみた。

PHPバージョンの確認

まずは、test.php をつくりバージョンを確認。
 test.phpの内容:
 <?php phpinfo(); ?> 

test.phpを /var/www/htmlに保存する。
これでブラウザからtest.phpをアクセスすることで、
バージョンが5.0.4ということがわかる。

RPMコマンドで確認する場合は、下記のとおり。
 # rpm -q php
 php-5.0.4-10

ソースパッケージのダウンロード&編集

まずはこのPHPのソースパッケージをダウンロードする。

 # wget http://ftp.riken.go.jp/Linux/fedora/core/updates/4/SRPMS/php-5.0.4-10.3.src.rpm
 --16:05:10--  http://ftp.riken.go.jp/Linux/fedora/core/updates/4/SRPMS/php-5.0.4-10.3.src.rpm
            => `php-5.0.4-10.3.src.rpm'
 ftp.riken.go.jp をDNSに問いあわせています... 134.160.38.1
 ftp.riken.go.jp[134.160.38.1]:80 に接続しています... 接続しました。
 HTTP による接続要求を送信しました、応答を待っています... 200 OK
 長さ: 6,078,201 [application/x-wais-source]
 
 100%[==============================================>] 6,078,201      8.79M/s
 
 16:05:11 (8.78 MB/s) - `php-5.0.4-10.3.src.rpm' saved [6,078,201/6,078,201]

次にソースファイルをインストール。

 # mkdir /usr/src/redhat
 # mkdir /usr/src/redhat/SOURCES
 # rpm -ivh php-5.0.4-10.3.src.rpm
    1:php                    ########################################### [100%]
 #

/usr/src/redhat/SPECS/php.spec を下記のとおり編集する
    %{?_with_ibase:--with-interbase=shared,/opt/interbase} \
上記を
 %{?_with_ibase:--with-interbase=shared,/opt/firebird} \

に編集。

ここでパッケージをリビルド
ところが、パッケージをリビルドするrpmbuildコマンドがインストールされていなかった。

rpmbuild のインストール


下記コマンドでrpmbuildをインストール
 # yum -y install rpm-build
ログ

 Setting up Install Process
 Setting up repositories
 updates-released          100% |=========================|  951 B    00:00
 extras                    100% |=========================| 1.1 kB    00:00
 base                      100% |=========================| 1.1 kB    00:00
 Reading repository metadata in from local files
 Parsing package install arguments
 Resolving Dependencies
 --> Populating transaction set with selected packages. Please wait.
 ---> Downloading header for rpm-build to pack into transaction set.
 rpm-build-4.4.1-22.i386.r 100% |=========================|  13 kB    00:00
 ---> Package rpm-build.i386 0:4.4.1-22 set to be updated
 --> Running transaction check
 
 Dependencies Resolved
 
 =============================================================================
  Package                 Arch       Version          Repository        Size
 =============================================================================
 Installing:
  rpm-build               i386       4.4.1-22         updates-released  513 k
 
 中略
 Installed: rpm-build.i386 0:4.4.1-22
 Complete!

これでインストールされた。

PHPパッケージのリビルド

下記コマンドでパッケージのリビルドテスト
 # rpmbuild -bc /usr/src/redhat/SPECS/php.spec
 cat: /usr/include/httpd/.mmn: そのようなファイルやディレクトリはありません
 エラー: Failed build dependencies:
         bzip2-devel is needed by php-5.0.4-10.3.i386
         curl-devel >= 7.9 is needed by php-5.0.4-10.3.i386
         db4-devel is needed by php-5.0.4-10.3.i386
         expat-devel is needed by php-5.0.4-10.3.i386
         gmp-devel is needed by php-5.0.4-10.3.i386
         aspell-devel >= 0.50.0 is needed by php-5.0.4-10.3.i386
         httpd-devel >= 2.0.46-1 is needed by php-5.0.4-10.3.i386
         libjpeg-devel is needed by php-5.0.4-10.3.i386
         libpng-devel is needed by php-5.0.4-10.3.i386
         pam-devel is needed by php-5.0.4-10.3.i386
         libstdc++-devel is needed by php-5.0.4-10.3.i386
         openssl-devel is needed by php-5.0.4-10.3.i386
         pcre-devel >= 4.5 is needed by php-5.0.4-10.3.i386
         libtool >= 1.4.3 is needed by php-5.0.4-10.3.i386
         gcc-c++ is needed by php-5.0.4-10.3.i386
         krb5-devel is needed by php-5.0.4-10.3.i386
         libc-client-devel is needed by php-5.0.4-10.3.i386
         cyrus-sasl-devel is needed by php-5.0.4-10.3.i386
         openldap-devel is needed by php-5.0.4-10.3.i386
         mysql-devel >= 4.1.0 is needed by php-5.0.4-10.3.i386
         postgresql-devel is needed by php-5.0.4-10.3.i386
         unixODBC-devel is needed by php-5.0.4-10.3.i386
         libxml2-devel is needed by php-5.0.4-10.3.i386
         net-snmp-devel is needed by php-5.0.4-10.3.i386
         libxslt-devel >= 1.0.18-1 is needed by php-5.0.4-10.3.i386
         libxml2-devel >= 2.4.14-1 is needed by php-5.0.4-10.3.i386
         ncurses-devel is needed by php-5.0.4-10.3.i386
         gd-devel is needed by php-5.0.4-10.3.i386
         freetype-devel is needed by php-5.0.4-10.3.i386

これだけのパッケージが足りないらしい。。。。。。。
それぞれyumでインストール。
 例) # yum -y install bzip2-devel

パッケージのリビルドにはFirebird(interbase)のオプションが有効になるようにしなくてはならないがSPECファイルの内容からどう引数を書けばよいかがわからなかった。
そこで、探したのが下記。
https://bugzilla.redhat.com/bugzilla/long_list.cgi?buglist=164286

ここを参考に下記コマンドでリビルド

 # rpmbuild --define '_with_ibase 1' -bb /usr/src/redhat/SPECS/php.spec

ここで約30分程度かかった。

/usr/src/redhat/RPMS/i386 の下にRPMファイルが作成される。
php-interbase-5.0.4-10.3.i386.rpm も作成されているので成功しているようだ。

パッケージのインストール


まずは、依存関係の問題等があるといやなので、インストール済みのPHPをアンインストールする。

 # yum remove php

OK。つぎにリビルドしたパッケージをインストールする。

 # rpm -ivh /usr/src/redhat/RPMS/i386/php*.i386.rpm
 
 エラー: Failed dependencies:
         libfbclient.so.1 is needed by php-interbase-5.0.4-10.3.i386
エラー発生。libfbclient.so.1が無いというエラー。
しかし、実際は存在している。

 # find / -name libfbclient.so.1
 /opt/firebird/lib/libfbclient.so.1
 /usr/lib/libfbclient.so.1

libfbclient.so.1の参照もとのlibfbclient.so.1.5.2 に実行権限が無いので実行権限を付与。
 # cd /opt/firebird/lib
 # chmod guo+x *

再度インストールしたが同様のエラー。
そこで、ちょっと乱暴だが、依存性を無視してインストールしてみる。

 # rpm -ivh --force --nodeps /usr/src/redhat/RPMS/i386/php*.i386.rpm

これで一応インストールだけは出来た。
次にApacheを起動する。
 # cd /etc/init.d
 # ./httpd start
 httpd を起動中:                       [  OK  ]
 #

前にバージョンチェックした test.phpに再度アクセス。無事バージョンが表示される。

次にsample.phpを作成。
内容:
 <?
 $host="localhost:/opt/firebird/examples/employee.fdb";
 $user="SYSDBA";
 $password="Password";
 $command="SELECT * FROM JOB";
 $conn = ibase_connect ($host,$user,$password);
 $result = ibase_query ($conn,$command);
 while ($row = ibase_fetch_object ($result)) {
   print "$row->JOB_CODE, $row->JOB_COUNTRY, $row->JOB_TITLE, $row->MAX_SALARY<br>\n"; 
 }
 ibase_free_result($result);
 ibase_close ($conn);
 ?>
これで無事interbaseオプションが有効になっていれば、sample.phpは動くはず。

ブラウザから、sample.phpにアクセス。
下記の結果が表示される。
 CEO, USA, Chief Executive Officer, 250000.00
 CFO, USA, Chief Financial Officer, 140000.00
 VP, USA, Vice President, 130000.00
 Dir, USA, Director, 120000.00
 Mngr, USA, Manager, 100000.00
 Mngr, USA, Manager, 60000.00
 Admin, USA, Administrative Assistant, 55000.00
 Admin, USA, Administrative Assistant, 40000.00
 Admin, England, Administrative Assistant, 26800.00
 PRel, USA, Public Relations Rep., 65000.00
 Mktg, USA, Marketing Analyst, 80000.00
 Mktg, USA, Marketing Analyst, 50000.00
 Accnt, USA, Accountant, 55000.00
 Finan, USA, Financial Analyst, 85000.00
 Eng, USA, Engineer, 110000.00
 Eng, USA, Engineer, 90000.00
 Eng, Japan, Engineer, 9720000.00
 Eng, USA, Engineer, 65000.00
 Eng, England, Engineer, 43550.00
 Eng, USA, Engineer, 35000.00
 Doc, USA, Technical Writer, 60000.00
 Doc, USA, Technical Writer, 40000.00
 Sales, USA, Sales Co-ordinator, 70000.00
 Sales, England, Sales Co-ordinator, 46900.00
 SRep, USA, Sales Representative, 100000.00
 SRep, England, Sales Representative, 67000.00
 SRep, Canada, Sales Representative, 132000.00
 SRep, Switzerland, Sales Representative, 149000.00
 SRep, Japan, Sales Representative, 10800000.00
 SRep, Italy, Sales Representative, 168000000.00
 SRep, France, Sales Representative, 591000.00

OK!
一部依存関係のところが解決できていないが無事に
PHP5.0.4からFirebird1.5へアクセスできた。

依存関係等無事にクリアした方がいらしたら是非コメントをいただけると助かります。

以上。








カテゴリ: [Firebird] - &trackback- 2005年09月24日 20:05:00
  • ランキングのお誘い
    お勉強BLOGЯanK
    http://obenkyo.1gr.jp/
    珈琲ブレイクに気軽に立ち寄れるランキング目指し中? -- 博士 (2009-09-26 11:45:25)
名前: コメント:
#blognavi

カテゴリ


コメント


更新履歴

取得中です。