TOP をテンプレートにして作成
ホーム
バックアップ
一覧
検索
最終更新
ヘルプ
ログイン
開始行
--[[プログラミングガイド]]~
*PHP から Firebird をアクセス(セットアップ編) [#r1422132]
このドキュメントは、PHP で Firebird を使うための設定方...
簡単な確認に関して書いてあります。~
ちなみに、Firebirdはすでにインストール済みであることが...
ので、未インストールの方は、[[クイックスタート]]やFB付属...
インストールを完了させてください。~
対応 PHP のバージョンは、PHP4.3.8となっています。バージ...
多少内容が変わってきますので注意が必要です。~
このページのコンテンツ:
#contents
*概要 [#qffeea73]
PHP から Firebird にアクセスするには、PHPの
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php...
方法と、[[Unified ODBC 関数:http://jp.php.net/manual/ja/r...
を使用する方法があります。
それぞれに利点がありますので、環境と必要に応じて使い分...
でしょう。
-[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php]]
--利点
---専用なので細かな制御が可能。速度も期待できる。
--欠点
---環境によってはFB1.5ネイティブにアクセスできない。
(IB6/FB1.0互換となる場合がある)
&br;
この場合、VARCHAR使用時に速度面で多少不利という面もあるが、
LinuxでFB1.5のみの環境ではPHPに組み込むためのコンパイルが...
将来的には改良されるかも。
---(Windows上では)ODBCに比べてお手軽さで劣る。
---他系列のデータベースエンジンへの変更は面倒な作業となる。
-[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odbc...
--利点
---Windows版PHPバイナリ配布版の場合、最初から組込み済みな...
お手軽に使用できる。
---ODBCは(特にWindows上では)データベースへのメジャーなイ...
として認知されていると思われる。
---標準インタフェースなので、データベースエンジンの変更が...
--欠点
---Firebird特有の細かな操作は出来ない。
---ODBCドライバをインストールする必要がある。ドライバ自体...
---Linux上ではメジャーなインターフェースとは必ずしも言え...
*インストールと設定に関して [#c591a19e]
ApacheなどのWebサーバや、PHPをインストールします。Apach...
入手やインストールに関してはここではあまり詳しく触れません。
インストールや設定に関することは、あくまでFirebirdを使用...
注意することが主体となっています。~
&br;
Apacheに関しては[[JAPAN APACHE USERS GROUP:http://www.a...
に情報がありますし、それ以外にも良いサイトが沢山検索でき...
PHPに関しては、[[日本PHPユーザ会:http://www.php.gr.jp/]...
[[PHPマニュアル:http://jp.php.net/manual/ja/]]中の
[[インストール:http://jp.php.net/manual/ja/installation.p...
書かれていますので、そちらも参考にして下さい。~
*Windows系OSでのインストールと設定 [#e087d83a]
Windows系OSの場合は、どちらもバイナリを入手してインスト...
多いでしょう。ここでは、Windowsでは一般的な方法と思われる、
PHP、DBクライアント共にモジュールとして動的にロードするよ...
について書きます。~
**Apacheのインストール [#d3f95b4b]
Apacheにはインストーラパッケージ(*.msi)がありますので、...
インストールを前提としています。~
&br;
Apacheはインストーラを起動し、インストール先のパスなど...
インストールしてください。~
Apacheの起動方法はは自動起動・手動起動のどちらでも構い...
の再起動の手順は当然変わってきます。自動起動の場合は再起...
出来ますのでそれを使用します。手動起動の場合、手動で一回...
させた後に再度手動起動という手順になるでしょう。~
IISなどのApache以外のWebサーバも使用できますが、その場...
ドキュメントに書かれている手順とは変わってきます。
**PHPの手動インストールと設定 [#pcc03b3d]
PHPは動的ロードを使用するために、インストーラ版(*.exe)...
で圧縮されたものをダウンロードし、手動でインストールを行...
&br;
PHPは動的ロード用のモジュール版を使いたいので多少複雑で...
--ダウンロードしたzipを適当なフォルダ(例えばC:\など)に展...
展開すると、"php-4.3.8-Win32"のようなディレクトリが作ら...
ディレクトリ以下の全内容を、PHPをインストールしたいディレ...
にコピーします。
--展開したディレクトリにある"php.ini-recommended"を元にし...
ファイル名のコピーを作成します。リネームでも良いのですが...
の設定を残しておいた方が良いでしょう。
--php.iniを変更します。~
[[ODBCを使用する場合>#SetODBC]]と[[専用関数を使用する場...
設定ファイル(php.ini)内の変更すべき内容が変わります。~
リンクされた補足説明に従って、使用する環境にあった設定...
--php本体とphp.iniのシステムディレクトリへのコピー
&br;
php4ts.dll と、コピー後に修正を施した php.ini を、Windo...
ディレクトリにコピーします。例えば、WindowsNT/2000の場合...
WindowsXPの場合は "C:\WINDOWS\SYSTEM32" などになります。
Windowsのインストールディレクトリが変更してある場合は、そ...
して下さい。~
&br;
※Webサーバ起動時に、Webサーバのプログラムがコピーしたphp....
必要があります。
''WindowsNT系のOSの場合は、ファイルのアクセス権限にも注意...
**Apacheの設定 [#lbe50289]
PHPマニュアルによると、Windows版では SAPI系の動的モジュ...
しているとのことで、性能面とセキィリティ面でも動的モジュ...
されているようです。~
Apacheの設定は、インストールディレクトリ下のconfディレ...
設定ファイル"httpd.conf"を変更することにより行います。~
設定変更が完了したら、忘れずに Apache を再起動してくだ...
***PHPを動的モジュール(DSO)としてロードして使用する場合 [...
使用するWebサーバにあったモジュール(dll)を選択します。~
使用モジュールの対応は次のとおりです。
|php4apache.dll|Apache 1.3.x 向け|
|php4apache2.dll|Apache 2.0.x 向け|
|php4isapi.dll|IIS/PWS ISAPI互換向け&br;(Apacheでも一応使...
|php4nsapi.dll|Netscape/iPlanet NSAPI互換向け|
選択したモジュールを使用するように、以下のような記述を...
適当な位置に追加します。適当な位置とは、例えばファイルの...
がなされてる場所付近ということです。~
ただし、ClearModuleListディレクティブよりも後にする必要...
# PHP モジュール関係
LoadModule php4_module c:/PHP/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
これで、拡張子 .php のファイルはPHPスクリプトが含まれて...
するようになります。
***PHPをCGIとして使用する場合 [#w3c49b99]
以下のような記述を設定ファイル中の適当な位置に追加します。
PHPをインストールしたパス(c:/PHP/)は、環境に合わせて変更...
ScriptAlias /php/ "c:/PHP/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
2行目の AddTypeは既に http.confにコメントアウト化して記...
その場合はコメントを外してください。
&aname(SetODBC);
**インストールと設定の補足説明:ODBCを使用する場合 [#xafe2...
ODBCを使用する場合は、
[[IBPhoenix Open Source ODBC Driver:http://www.ibphoenix....
より、最新のODBCドライバを入手してインストールします。イ...
質問に答えて行くだけですので非常に簡単です。~
インストールが完了したら、コントロールパネルの管理ツー...
の設定も行います。スクリプトでは、ここで設定したデータソ...
(Data Source Name : DSN)を使用してアクセス先を特定します。~
ODBCに関しては、このサイト
[[(Firebird用ODBCドライバのインストール):http://park11.wa...
も参考になるでしょう。~
&br;
''Windows用PHPの場合、コピーにより作成した php.ini に対...
もしも設定を変更する必要がある場合は、php.iniファイル中...
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
の下にある、
[ODBC]
で始まる項目にODBCの設定項目が有りますので、それを変更...
詳細の内容は、PHPマニュアルの
[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odbc....
にある「実行用の設定」を参照して下さい。
とりあえず、よく設定すると思われるのは持続的接続に関する...
; Allow or prevent persistent links.
odbc.allow_persistent = On
; Check that a connection is still valid before reuse.
odbc.check_persistent = On
odbc.allow_persistentは、持続的接続(odbc_pconnect)を使...
を設定する必要があります。また、その場合は odbc.check_per...
変更したほうがより安全と言えるでしょう。~
&br;
設定変更後はWebサーバ(Apache)の再起動などを行い設定を反...
あります。
&aname(SetIB);
**インストールと設定の補足説明:専用関数を使用する場合 [#h...
動的にFB/IB用のモジュールを読み込むためには、php.iniの...
FB/IB用のエクステンションを動的にロードするようにします...
PHPを展開したディレクトリに合わせて設定してください。
-Extensionを読み込むパスの設定変更
; Directory in which the loadable extensions (modules) r...
;extension_dir = "./"
これを
; Directory in which the loadable extensions (modules) r...
extension_dir = "c:\php\extensions\"
のように変更します。
-ロードモジュールのコメントアウトを有効な文に変更
;extension=php_interbase.dll
これのコメントを取り去り、
extension=php_interbase.dll
のように変更します。
&aname(magic_quotes_sybase);
-シングルクォートに関する変更
&br;
これは設定しないでも動くようですが、PHPマニュアル上では...
なっていますので、今回のように
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php]]
を使う場合には変更しておいた方がいいかもしれません。
; Use Sybase-style magic quotes (escape ' with '' instea...
magic_quotes_sybase = Off
を
; Use Sybase-style magic quotes (escape ' with '' instea...
magic_quotes_sybase = On
のように変更します。
*Linux系でのインストールと設定 [#uf8a3d70]
Linux系OSの場合は、どちらもソースを入手してコンパイルす...
多いでしょう。
ここでは、Apacheのインストール自体にはまったく触れません。
インストール済みの Apache を使用するか、またはディストリ...
に合ったパッケージで導入して下さい。ただし、DSOを使用でき...
構成された Apache の使用を前提としています。~
PHPはDSOでロードするものとし、IB専用関数を使用できるよ...
場合とします。~
&br;
対応する Firebird のバージョンは 1.0.x です。~
Firebird 1.5.1 の場合は、データベースがデフォルトでイン...
ディレクトリが/opt/firebirdと変更されています。また、バー...
コンパイルが上手くいかない場合もありますので、その場合は
トラブルシューティングを見てください。
**PHPのインストール [#y1f32683]
PHPのソースを[[日本PHPユーザ会:http://www.php.gr.jp/]]...
リンクを辿って入手します。その後、入手したソースを作業用...
解凍します。作業用ディレクトリの場所は、自分のローカルデ...
なんら問題ありません。
$ tar xvzf php-4.3.8.tar,gz
最後の "make install"によるインストールは''スーパーユー...
あるので、"su"コマンドなどを使用してあらかじめスーパーユ...
おきましょう。~
configure を実行して、[[InterBase関数:http://jp.php.net...
サポートを組込みます。configureの細かい使用法は、"./confi...
ヘルプが出ますので、そちらを確認してください。~
下の例は、makeやインストールまで行っています。
# cd ../php-4.3.8
# ./configure --with-apxs=/usr/local/apache/bin/apxs \
--with-interbase=/opt/interbase --enable-mbstring \
--enable-mbstr-enc-trans --enable-mbregex
# make
# make install
※1 最近のPHPはデフォルトで MySQL のサポートが組み込まれ...
不要な場合は configure に --without-mysql オプションを追...
削除できます。省メモリ重視の場合には役立ちます。
&br;
※2 --with-interbase=/opt/interbase の /opt/interbaseは、...
インストールされたディレクトリを表します。
&br;
※3 一部のディストリビューションでは、
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php]]
サポート組込み済みのパッケージが提供されているそうです。
configureが面倒という人は、探してみるのも良いかもしれませ...
**PHPの設定 [#s629dc26]
PHPのディレクトリにある"php.ini-recommended"を元にして...
ファイル名のコピーを作成します。リネームでも良いのですが...
デフォルトの設定は残しておいた方が良いでしょう。~
作成した php.ini を編集することにより、設定を行います。~
''作成したphp.iniに対して特に何も変更を行わなくても動作...
しかし、PHPマニュアルを読む限りでは、変更を行った方が良い...
ありますので、変更を行った方が良いかもしれません。~
詳しくは、[[シングルクォートに関する変更>#magic_quotes_...
下さい。~
&br;
設定が決まったら、php.iniを然るべき場所にコピー(または...
を作成)します。
# cp php.ini /usr/local/lib/php.ini
**Apcheの設定追加 [#sc74995a]
拡張子が ".php" となっているファイルを PHP スクリプトだ...
Apacheを設定します。~
次の2行、または初めの1行のみを設定ファイル(httpd.conf...
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
必要に応じて、ディレクトリインデックスに項目を追加する...
(もしあれば既存の)行に、"index.php" を追加することで設定...
DirectoryIndex index.php index.html
すべての設定が完了したら、Apache の再起動を行ってくださ...
Linuxのバージョンやディストリビューションで変わりますが、...
ようなコマンドになるでしょう。
# /etc/init.d/httpd restart
*動作確認 [#m3fe6d61]
PHP+Apacheの動作確認と、データベースサポートの組込み及...
2種類の項目について書きます。~
データベースサポートの確認では、
[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odbc....
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php...
2例を挙げています。~
いずれも、データベースやドライバの設定は事前に isql な...
行っておく必要があります。
**phpinfoによる設定の確認(PHP自体の動作確認) [#c0cbe7c3]
PHPの設定情報を見る機能で、動作や組込みの状態を確認しま...
&br;
ここで作成するスクリプトファイルは、クラックにも利用可...
関する詳細な情報が出力されます。そのため、使用後にそのま...
''セキュリティ上の重大な弱点になる可能性が有ります。''
使用後は''忘れずに削除''するか、あらかじめ類推されること...
ファイル名を設定するなどの対策が必須です。~
&br;
次のような内容のPHPスクリプトファイルを、適当な名前で A...
下などに作成します。(例えば、/usr/local/apache/htdocs/inf...
<? phpinfo(); ?>
次に、IEその他のWebブラウザを立ち上げて、PHPに関する設...
されるかを確認します。(参照URLは、例えば http://localhost...
情報表示が行われたら、その中に "interbase" という題のつ...
こと、及びその表にある項目 "interbase Support" が "enable...
ことを確認します。~
PHPの設定が上手くいっていない場合は、項目名自体が出ない...
現れます。その場合は、設定項目の見直しと、適切なディレク...
が設定されているか確認してください。
&br;
&br;
※ コマンドライン上で、"php -i" を実行した場合も同じよう...
表示されます。ただし、これはあくまでコマンドライン用での...
おり、Webサーバから呼び出されたときとは食い違いが出る場合...
これは、Apache などの Webサーバ上で動作する時と、読み込...
(php.ini)の存在するパスが異なっている場合があるためです。~
設定ファイルのパスも同時に表示されますので確認してくだ...
&br;
**[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odb...
PHPに[[Unified ODBC 関数:http://jp.php.net/manual/ja/re...
正常に組み込まれており、かつFirebird及び ODBC ドライバが...
確認します。
具体的には、odbc_connect()を呼び出して、接続自体が成功す...
確認します。~
例えば、次のような内容のスクリプトファイルを作成し、Web...
動作を確認してみてください。データソース名やユーザ名など...
設定を行う必要があります。ちなみに、このスクリプトのデー...
Windows環境向けです。~
''※テストで使用するデータベースや、それに関連付けられたデ...
&br;
ファイル名 : odbc_connect.php
<HTML>
<HEAD>
<TITLE>PHP + Firebird / Interbase test (ODBC接続)</TITLE>
</HEAD>
<BODY>
<H3>FB(ODBC) Connect test.</H3>
<?php
// DB アカウント定義
define("DBNAME","FB_TEST"); // データソース名
define("DBUSER","BBSUSER"); // 接続ユーザ名
define("DBPASSWORD","xo2z3qwa"); // パスワードの設定
// DB 接続
$dbh = odbc_connect(DBNAME, DBUSER, DBPASSWORD);
if ($dbh == FALSE) {
echo 'データベースと接続できません。<BR>';
} else {
echo 'データベースとの接続に成功しました。<BR>';
// DB 切断
odbc_close($dbh);
}
?>
</BODY>
</HTML>
接続に成功すれば、ブラウザ上に「データベースとの接続に...
と表示されるはずです。~
odbc_connect()関数が存在しないなどのエラー(通常は英文)...
スクリプトのタイプミスもしくは PHP 設定ミスなどが考えられ...
トラブルシューティングを参照して下さい。
**[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.p...
PHPに[[InterBase関数:http://jp.php.net/manual/ja/ref.ib...
正常に組み込まれており、かつFirebirdが動作しているかを確...
具体的には、ibase_connect()を呼び出して、接続自体が成功す...
確認します。~
例えば、次のような内容のスクリプトファイルを作成し、Web...
動作を確認してみてください。データベース名やユーザ名など...
設定を行う必要があります。ちなみに、このスクリプトのデー...
Windows環境向けです。~
''※テストで使用するデータベース(TESTDB.FDB)は、事前に isq...
&br;
ファイル名 : fbconnect.php
<HTML>
<HEAD>
<TITLE>PHP + Firebird / Interbase test (接続)</TITLE>
</HEAD>
<BODY>
<H3>FB Connect test.</H3>
<?php
// DB アカウント定義
define("DBNAME","c:\db\TEST.FDB"); // データベース名
define("DBUSER","SYSDBA"); // 接続ユーザ名
define("DBPASS","masterkey"); // パスワード
// DB 接続
$dbh = ibase_connect(DBNAME,DBUSER,DBPASS,"EUCJ_0208");
if ($dbh == FALSE) {
echo 'データベースと接続できません。<BR>';
} else {
echo 'データベースとの接続に成功しました。<BR>';
// DB 切断
ibase_close($dbh);
}
?>
</BODY>
</HTML>
接続に成功すれば、ブラウザ上に「データベースとの接続に...
と表示されるはずです。~
ibase_connect()関数が存在しないなどのエラー(通常は英文)...
スクリプトのタイプミスもしくは PHP 設定ミスなどが考えられ...
トラブルシューティングを参照して下さい。
*トラブルシューティング [#b3029530]
**PHPがコンパイルできない [#t9fcb8aa]
主に Linux 系の情報です。
&br;
-パスの指定ミス
&br;
configure 時のパス指定などを見直してください。FB1.5の場...
インストールパスが、/opt/interbase から /opt/firebird に...
ただし、すれ違いによりそれでも上手くいかない場合があり...
次項を見てください。
-FB1.5とPHPのすれ違い
&br;
※旧バージョンのPHP/FBでは発生していましたが、Firebird 1...
解決されている模様です。参考のために残してありますが、基...
にはならないことがほとんどであるはずです。~
FB 1.5 と PHP でのすれ違いにより、FB1.5で用意されたリソ...
行かない場合があります。~
解決策としては、とりあえず FB 1.0.x がインストールされ...
コンパイルした後に、FB 1.0 をアンインストールし、FB 1.5.x...
するという方法があります。~
または FB 1.0 の環境(/opt/interbase下)を適当な場所にコ...
おき、configure時にその場所を指定する方法もあります。~
この対処を行った場合、PHPとデータベースエンジン間の処理...
となりFB1.5の場合と比べて多少性能が落ちる場合もあります。
**Apacheの起動時に警告が出る [#o19150aa]
-mod_php4.cに関する警告
&br;
例えば、次のような警告です。
[warn] module mod_php4.c is already added, skipping
Apache の構成時に最初から mod_php4.c が組み込まれている...
該当する行をコメントにして下さい
LoadModule php4_module e:/PHP/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
コメントアウト化↓
LoadModule php4_module e:/PHP/sapi/php4apache.dll
#AddModule mod_php4.c
AddType application/x-httpd-php .php
**phpinfo()の表示が出ない [#adb7521e]
-URL(特にポート番号)の指定を確認してください。~
-Apacheの設定ファイルを確認してください。~
-スクリプトの設置場所やタイプなどにミスがないか確認してく...
-httpヘッダを見ることが出来るブラウザでヘッダを参照し、起...
バージョンなどを確認してください。
(Windows なら httpc のようなコマンドラインブラウザがあり...
-PHPをコマンドラインで動作させて、PHPが動作することを確認...
具体的には、コマンドラインより、
$ php -i
を実行してみてください。
**[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.p...
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.p...
というエラー(英文)が出た場合です。interbaseサポートが組み...
などに出ます。~
&br;
-スクリプトの設置場所やタイプなどにミスがないか確認してく...
-phpinfo()の表示を確認して、interbase に関する項目とサポ...
いることを確認してください。~
使用中の設定ファイルのパスも表示されますので、意図した...
しているか、及びその設定ファイル自体にも問題がないか確認...
-設定ファイルは正しいはずなのに、phpinfo()で表示される内...
次項の、「PHPの設定が正しく反映されない」も読んでください。
**PHPの設定が正しく反映されない [#m0eb50f8]
確認した設定ファイルの内容がうまく反映されていないよう...
PHPの組込み手順やApacheのインストール方法の違いなどにより...
ようです。~
&br;
-コマンドラインの"php -i"を実行して、設定ファイルの内容が...
いるかを確認してください。うまく反映されない場合は、設定...
間違っているか、意図した設定ファイルが使用されていません。~
-コマンドラインでは正しいのにWebサーバ経由だと上手く反映...
設定ファイルを読み込むパスが、何らかの理由により Apache ...
ホームディレクトリになっている為かもしれません。Apache の...
(例えば、C:\Apache Group\Apacheなど)に php.ini を置いて、...
して様子を見てください。
**その他 [#xa8c462b]
上手く動作しない場合は、gds32.dll や fbclient.dll(1.5以...
として存在し、かつ実行パスが通っているかを確認してくださ...
クライアント環境をセットアップするコマンド(instclient.exe...
最終行:
--[[プログラミングガイド]]~
*PHP から Firebird をアクセス(セットアップ編) [#r1422132]
このドキュメントは、PHP で Firebird を使うための設定方...
簡単な確認に関して書いてあります。~
ちなみに、Firebirdはすでにインストール済みであることが...
ので、未インストールの方は、[[クイックスタート]]やFB付属...
インストールを完了させてください。~
対応 PHP のバージョンは、PHP4.3.8となっています。バージ...
多少内容が変わってきますので注意が必要です。~
このページのコンテンツ:
#contents
*概要 [#qffeea73]
PHP から Firebird にアクセスするには、PHPの
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php...
方法と、[[Unified ODBC 関数:http://jp.php.net/manual/ja/r...
を使用する方法があります。
それぞれに利点がありますので、環境と必要に応じて使い分...
でしょう。
-[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php]]
--利点
---専用なので細かな制御が可能。速度も期待できる。
--欠点
---環境によってはFB1.5ネイティブにアクセスできない。
(IB6/FB1.0互換となる場合がある)
&br;
この場合、VARCHAR使用時に速度面で多少不利という面もあるが、
LinuxでFB1.5のみの環境ではPHPに組み込むためのコンパイルが...
将来的には改良されるかも。
---(Windows上では)ODBCに比べてお手軽さで劣る。
---他系列のデータベースエンジンへの変更は面倒な作業となる。
-[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odbc...
--利点
---Windows版PHPバイナリ配布版の場合、最初から組込み済みな...
お手軽に使用できる。
---ODBCは(特にWindows上では)データベースへのメジャーなイ...
として認知されていると思われる。
---標準インタフェースなので、データベースエンジンの変更が...
--欠点
---Firebird特有の細かな操作は出来ない。
---ODBCドライバをインストールする必要がある。ドライバ自体...
---Linux上ではメジャーなインターフェースとは必ずしも言え...
*インストールと設定に関して [#c591a19e]
ApacheなどのWebサーバや、PHPをインストールします。Apach...
入手やインストールに関してはここではあまり詳しく触れません。
インストールや設定に関することは、あくまでFirebirdを使用...
注意することが主体となっています。~
&br;
Apacheに関しては[[JAPAN APACHE USERS GROUP:http://www.a...
に情報がありますし、それ以外にも良いサイトが沢山検索でき...
PHPに関しては、[[日本PHPユーザ会:http://www.php.gr.jp/]...
[[PHPマニュアル:http://jp.php.net/manual/ja/]]中の
[[インストール:http://jp.php.net/manual/ja/installation.p...
書かれていますので、そちらも参考にして下さい。~
*Windows系OSでのインストールと設定 [#e087d83a]
Windows系OSの場合は、どちらもバイナリを入手してインスト...
多いでしょう。ここでは、Windowsでは一般的な方法と思われる、
PHP、DBクライアント共にモジュールとして動的にロードするよ...
について書きます。~
**Apacheのインストール [#d3f95b4b]
Apacheにはインストーラパッケージ(*.msi)がありますので、...
インストールを前提としています。~
&br;
Apacheはインストーラを起動し、インストール先のパスなど...
インストールしてください。~
Apacheの起動方法はは自動起動・手動起動のどちらでも構い...
の再起動の手順は当然変わってきます。自動起動の場合は再起...
出来ますのでそれを使用します。手動起動の場合、手動で一回...
させた後に再度手動起動という手順になるでしょう。~
IISなどのApache以外のWebサーバも使用できますが、その場...
ドキュメントに書かれている手順とは変わってきます。
**PHPの手動インストールと設定 [#pcc03b3d]
PHPは動的ロードを使用するために、インストーラ版(*.exe)...
で圧縮されたものをダウンロードし、手動でインストールを行...
&br;
PHPは動的ロード用のモジュール版を使いたいので多少複雑で...
--ダウンロードしたzipを適当なフォルダ(例えばC:\など)に展...
展開すると、"php-4.3.8-Win32"のようなディレクトリが作ら...
ディレクトリ以下の全内容を、PHPをインストールしたいディレ...
にコピーします。
--展開したディレクトリにある"php.ini-recommended"を元にし...
ファイル名のコピーを作成します。リネームでも良いのですが...
の設定を残しておいた方が良いでしょう。
--php.iniを変更します。~
[[ODBCを使用する場合>#SetODBC]]と[[専用関数を使用する場...
設定ファイル(php.ini)内の変更すべき内容が変わります。~
リンクされた補足説明に従って、使用する環境にあった設定...
--php本体とphp.iniのシステムディレクトリへのコピー
&br;
php4ts.dll と、コピー後に修正を施した php.ini を、Windo...
ディレクトリにコピーします。例えば、WindowsNT/2000の場合...
WindowsXPの場合は "C:\WINDOWS\SYSTEM32" などになります。
Windowsのインストールディレクトリが変更してある場合は、そ...
して下さい。~
&br;
※Webサーバ起動時に、Webサーバのプログラムがコピーしたphp....
必要があります。
''WindowsNT系のOSの場合は、ファイルのアクセス権限にも注意...
**Apacheの設定 [#lbe50289]
PHPマニュアルによると、Windows版では SAPI系の動的モジュ...
しているとのことで、性能面とセキィリティ面でも動的モジュ...
されているようです。~
Apacheの設定は、インストールディレクトリ下のconfディレ...
設定ファイル"httpd.conf"を変更することにより行います。~
設定変更が完了したら、忘れずに Apache を再起動してくだ...
***PHPを動的モジュール(DSO)としてロードして使用する場合 [...
使用するWebサーバにあったモジュール(dll)を選択します。~
使用モジュールの対応は次のとおりです。
|php4apache.dll|Apache 1.3.x 向け|
|php4apache2.dll|Apache 2.0.x 向け|
|php4isapi.dll|IIS/PWS ISAPI互換向け&br;(Apacheでも一応使...
|php4nsapi.dll|Netscape/iPlanet NSAPI互換向け|
選択したモジュールを使用するように、以下のような記述を...
適当な位置に追加します。適当な位置とは、例えばファイルの...
がなされてる場所付近ということです。~
ただし、ClearModuleListディレクティブよりも後にする必要...
# PHP モジュール関係
LoadModule php4_module c:/PHP/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
これで、拡張子 .php のファイルはPHPスクリプトが含まれて...
するようになります。
***PHPをCGIとして使用する場合 [#w3c49b99]
以下のような記述を設定ファイル中の適当な位置に追加します。
PHPをインストールしたパス(c:/PHP/)は、環境に合わせて変更...
ScriptAlias /php/ "c:/PHP/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
2行目の AddTypeは既に http.confにコメントアウト化して記...
その場合はコメントを外してください。
&aname(SetODBC);
**インストールと設定の補足説明:ODBCを使用する場合 [#xafe2...
ODBCを使用する場合は、
[[IBPhoenix Open Source ODBC Driver:http://www.ibphoenix....
より、最新のODBCドライバを入手してインストールします。イ...
質問に答えて行くだけですので非常に簡単です。~
インストールが完了したら、コントロールパネルの管理ツー...
の設定も行います。スクリプトでは、ここで設定したデータソ...
(Data Source Name : DSN)を使用してアクセス先を特定します。~
ODBCに関しては、このサイト
[[(Firebird用ODBCドライバのインストール):http://park11.wa...
も参考になるでしょう。~
&br;
''Windows用PHPの場合、コピーにより作成した php.ini に対...
もしも設定を変更する必要がある場合は、php.iniファイル中...
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
の下にある、
[ODBC]
で始まる項目にODBCの設定項目が有りますので、それを変更...
詳細の内容は、PHPマニュアルの
[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odbc....
にある「実行用の設定」を参照して下さい。
とりあえず、よく設定すると思われるのは持続的接続に関する...
; Allow or prevent persistent links.
odbc.allow_persistent = On
; Check that a connection is still valid before reuse.
odbc.check_persistent = On
odbc.allow_persistentは、持続的接続(odbc_pconnect)を使...
を設定する必要があります。また、その場合は odbc.check_per...
変更したほうがより安全と言えるでしょう。~
&br;
設定変更後はWebサーバ(Apache)の再起動などを行い設定を反...
あります。
&aname(SetIB);
**インストールと設定の補足説明:専用関数を使用する場合 [#h...
動的にFB/IB用のモジュールを読み込むためには、php.iniの...
FB/IB用のエクステンションを動的にロードするようにします...
PHPを展開したディレクトリに合わせて設定してください。
-Extensionを読み込むパスの設定変更
; Directory in which the loadable extensions (modules) r...
;extension_dir = "./"
これを
; Directory in which the loadable extensions (modules) r...
extension_dir = "c:\php\extensions\"
のように変更します。
-ロードモジュールのコメントアウトを有効な文に変更
;extension=php_interbase.dll
これのコメントを取り去り、
extension=php_interbase.dll
のように変更します。
&aname(magic_quotes_sybase);
-シングルクォートに関する変更
&br;
これは設定しないでも動くようですが、PHPマニュアル上では...
なっていますので、今回のように
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php]]
を使う場合には変更しておいた方がいいかもしれません。
; Use Sybase-style magic quotes (escape ' with '' instea...
magic_quotes_sybase = Off
を
; Use Sybase-style magic quotes (escape ' with '' instea...
magic_quotes_sybase = On
のように変更します。
*Linux系でのインストールと設定 [#uf8a3d70]
Linux系OSの場合は、どちらもソースを入手してコンパイルす...
多いでしょう。
ここでは、Apacheのインストール自体にはまったく触れません。
インストール済みの Apache を使用するか、またはディストリ...
に合ったパッケージで導入して下さい。ただし、DSOを使用でき...
構成された Apache の使用を前提としています。~
PHPはDSOでロードするものとし、IB専用関数を使用できるよ...
場合とします。~
&br;
対応する Firebird のバージョンは 1.0.x です。~
Firebird 1.5.1 の場合は、データベースがデフォルトでイン...
ディレクトリが/opt/firebirdと変更されています。また、バー...
コンパイルが上手くいかない場合もありますので、その場合は
トラブルシューティングを見てください。
**PHPのインストール [#y1f32683]
PHPのソースを[[日本PHPユーザ会:http://www.php.gr.jp/]]...
リンクを辿って入手します。その後、入手したソースを作業用...
解凍します。作業用ディレクトリの場所は、自分のローカルデ...
なんら問題ありません。
$ tar xvzf php-4.3.8.tar,gz
最後の "make install"によるインストールは''スーパーユー...
あるので、"su"コマンドなどを使用してあらかじめスーパーユ...
おきましょう。~
configure を実行して、[[InterBase関数:http://jp.php.net...
サポートを組込みます。configureの細かい使用法は、"./confi...
ヘルプが出ますので、そちらを確認してください。~
下の例は、makeやインストールまで行っています。
# cd ../php-4.3.8
# ./configure --with-apxs=/usr/local/apache/bin/apxs \
--with-interbase=/opt/interbase --enable-mbstring \
--enable-mbstr-enc-trans --enable-mbregex
# make
# make install
※1 最近のPHPはデフォルトで MySQL のサポートが組み込まれ...
不要な場合は configure に --without-mysql オプションを追...
削除できます。省メモリ重視の場合には役立ちます。
&br;
※2 --with-interbase=/opt/interbase の /opt/interbaseは、...
インストールされたディレクトリを表します。
&br;
※3 一部のディストリビューションでは、
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php]]
サポート組込み済みのパッケージが提供されているそうです。
configureが面倒という人は、探してみるのも良いかもしれませ...
**PHPの設定 [#s629dc26]
PHPのディレクトリにある"php.ini-recommended"を元にして...
ファイル名のコピーを作成します。リネームでも良いのですが...
デフォルトの設定は残しておいた方が良いでしょう。~
作成した php.ini を編集することにより、設定を行います。~
''作成したphp.iniに対して特に何も変更を行わなくても動作...
しかし、PHPマニュアルを読む限りでは、変更を行った方が良い...
ありますので、変更を行った方が良いかもしれません。~
詳しくは、[[シングルクォートに関する変更>#magic_quotes_...
下さい。~
&br;
設定が決まったら、php.iniを然るべき場所にコピー(または...
を作成)します。
# cp php.ini /usr/local/lib/php.ini
**Apcheの設定追加 [#sc74995a]
拡張子が ".php" となっているファイルを PHP スクリプトだ...
Apacheを設定します。~
次の2行、または初めの1行のみを設定ファイル(httpd.conf...
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
必要に応じて、ディレクトリインデックスに項目を追加する...
(もしあれば既存の)行に、"index.php" を追加することで設定...
DirectoryIndex index.php index.html
すべての設定が完了したら、Apache の再起動を行ってくださ...
Linuxのバージョンやディストリビューションで変わりますが、...
ようなコマンドになるでしょう。
# /etc/init.d/httpd restart
*動作確認 [#m3fe6d61]
PHP+Apacheの動作確認と、データベースサポートの組込み及...
2種類の項目について書きます。~
データベースサポートの確認では、
[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odbc....
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.php...
2例を挙げています。~
いずれも、データベースやドライバの設定は事前に isql な...
行っておく必要があります。
**phpinfoによる設定の確認(PHP自体の動作確認) [#c0cbe7c3]
PHPの設定情報を見る機能で、動作や組込みの状態を確認しま...
&br;
ここで作成するスクリプトファイルは、クラックにも利用可...
関する詳細な情報が出力されます。そのため、使用後にそのま...
''セキュリティ上の重大な弱点になる可能性が有ります。''
使用後は''忘れずに削除''するか、あらかじめ類推されること...
ファイル名を設定するなどの対策が必須です。~
&br;
次のような内容のPHPスクリプトファイルを、適当な名前で A...
下などに作成します。(例えば、/usr/local/apache/htdocs/inf...
<? phpinfo(); ?>
次に、IEその他のWebブラウザを立ち上げて、PHPに関する設...
されるかを確認します。(参照URLは、例えば http://localhost...
情報表示が行われたら、その中に "interbase" という題のつ...
こと、及びその表にある項目 "interbase Support" が "enable...
ことを確認します。~
PHPの設定が上手くいっていない場合は、項目名自体が出ない...
現れます。その場合は、設定項目の見直しと、適切なディレク...
が設定されているか確認してください。
&br;
&br;
※ コマンドライン上で、"php -i" を実行した場合も同じよう...
表示されます。ただし、これはあくまでコマンドライン用での...
おり、Webサーバから呼び出されたときとは食い違いが出る場合...
これは、Apache などの Webサーバ上で動作する時と、読み込...
(php.ini)の存在するパスが異なっている場合があるためです。~
設定ファイルのパスも同時に表示されますので確認してくだ...
&br;
**[[Unified ODBC 関数:http://jp.php.net/manual/ja/ref.odb...
PHPに[[Unified ODBC 関数:http://jp.php.net/manual/ja/re...
正常に組み込まれており、かつFirebird及び ODBC ドライバが...
確認します。
具体的には、odbc_connect()を呼び出して、接続自体が成功す...
確認します。~
例えば、次のような内容のスクリプトファイルを作成し、Web...
動作を確認してみてください。データソース名やユーザ名など...
設定を行う必要があります。ちなみに、このスクリプトのデー...
Windows環境向けです。~
''※テストで使用するデータベースや、それに関連付けられたデ...
&br;
ファイル名 : odbc_connect.php
<HTML>
<HEAD>
<TITLE>PHP + Firebird / Interbase test (ODBC接続)</TITLE>
</HEAD>
<BODY>
<H3>FB(ODBC) Connect test.</H3>
<?php
// DB アカウント定義
define("DBNAME","FB_TEST"); // データソース名
define("DBUSER","BBSUSER"); // 接続ユーザ名
define("DBPASSWORD","xo2z3qwa"); // パスワードの設定
// DB 接続
$dbh = odbc_connect(DBNAME, DBUSER, DBPASSWORD);
if ($dbh == FALSE) {
echo 'データベースと接続できません。<BR>';
} else {
echo 'データベースとの接続に成功しました。<BR>';
// DB 切断
odbc_close($dbh);
}
?>
</BODY>
</HTML>
接続に成功すれば、ブラウザ上に「データベースとの接続に...
と表示されるはずです。~
odbc_connect()関数が存在しないなどのエラー(通常は英文)...
スクリプトのタイプミスもしくは PHP 設定ミスなどが考えられ...
トラブルシューティングを参照して下さい。
**[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.p...
PHPに[[InterBase関数:http://jp.php.net/manual/ja/ref.ib...
正常に組み込まれており、かつFirebirdが動作しているかを確...
具体的には、ibase_connect()を呼び出して、接続自体が成功す...
確認します。~
例えば、次のような内容のスクリプトファイルを作成し、Web...
動作を確認してみてください。データベース名やユーザ名など...
設定を行う必要があります。ちなみに、このスクリプトのデー...
Windows環境向けです。~
''※テストで使用するデータベース(TESTDB.FDB)は、事前に isq...
&br;
ファイル名 : fbconnect.php
<HTML>
<HEAD>
<TITLE>PHP + Firebird / Interbase test (接続)</TITLE>
</HEAD>
<BODY>
<H3>FB Connect test.</H3>
<?php
// DB アカウント定義
define("DBNAME","c:\db\TEST.FDB"); // データベース名
define("DBUSER","SYSDBA"); // 接続ユーザ名
define("DBPASS","masterkey"); // パスワード
// DB 接続
$dbh = ibase_connect(DBNAME,DBUSER,DBPASS,"EUCJ_0208");
if ($dbh == FALSE) {
echo 'データベースと接続できません。<BR>';
} else {
echo 'データベースとの接続に成功しました。<BR>';
// DB 切断
ibase_close($dbh);
}
?>
</BODY>
</HTML>
接続に成功すれば、ブラウザ上に「データベースとの接続に...
と表示されるはずです。~
ibase_connect()関数が存在しないなどのエラー(通常は英文)...
スクリプトのタイプミスもしくは PHP 設定ミスなどが考えられ...
トラブルシューティングを参照して下さい。
*トラブルシューティング [#b3029530]
**PHPがコンパイルできない [#t9fcb8aa]
主に Linux 系の情報です。
&br;
-パスの指定ミス
&br;
configure 時のパス指定などを見直してください。FB1.5の場...
インストールパスが、/opt/interbase から /opt/firebird に...
ただし、すれ違いによりそれでも上手くいかない場合があり...
次項を見てください。
-FB1.5とPHPのすれ違い
&br;
※旧バージョンのPHP/FBでは発生していましたが、Firebird 1...
解決されている模様です。参考のために残してありますが、基...
にはならないことがほとんどであるはずです。~
FB 1.5 と PHP でのすれ違いにより、FB1.5で用意されたリソ...
行かない場合があります。~
解決策としては、とりあえず FB 1.0.x がインストールされ...
コンパイルした後に、FB 1.0 をアンインストールし、FB 1.5.x...
するという方法があります。~
または FB 1.0 の環境(/opt/interbase下)を適当な場所にコ...
おき、configure時にその場所を指定する方法もあります。~
この対処を行った場合、PHPとデータベースエンジン間の処理...
となりFB1.5の場合と比べて多少性能が落ちる場合もあります。
**Apacheの起動時に警告が出る [#o19150aa]
-mod_php4.cに関する警告
&br;
例えば、次のような警告です。
[warn] module mod_php4.c is already added, skipping
Apache の構成時に最初から mod_php4.c が組み込まれている...
該当する行をコメントにして下さい
LoadModule php4_module e:/PHP/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
コメントアウト化↓
LoadModule php4_module e:/PHP/sapi/php4apache.dll
#AddModule mod_php4.c
AddType application/x-httpd-php .php
**phpinfo()の表示が出ない [#adb7521e]
-URL(特にポート番号)の指定を確認してください。~
-Apacheの設定ファイルを確認してください。~
-スクリプトの設置場所やタイプなどにミスがないか確認してく...
-httpヘッダを見ることが出来るブラウザでヘッダを参照し、起...
バージョンなどを確認してください。
(Windows なら httpc のようなコマンドラインブラウザがあり...
-PHPをコマンドラインで動作させて、PHPが動作することを確認...
具体的には、コマンドラインより、
$ php -i
を実行してみてください。
**[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.p...
[[InterBase関数:http://jp.php.net/manual/ja/ref.ibase.p...
というエラー(英文)が出た場合です。interbaseサポートが組み...
などに出ます。~
&br;
-スクリプトの設置場所やタイプなどにミスがないか確認してく...
-phpinfo()の表示を確認して、interbase に関する項目とサポ...
いることを確認してください。~
使用中の設定ファイルのパスも表示されますので、意図した...
しているか、及びその設定ファイル自体にも問題がないか確認...
-設定ファイルは正しいはずなのに、phpinfo()で表示される内...
次項の、「PHPの設定が正しく反映されない」も読んでください。
**PHPの設定が正しく反映されない [#m0eb50f8]
確認した設定ファイルの内容がうまく反映されていないよう...
PHPの組込み手順やApacheのインストール方法の違いなどにより...
ようです。~
&br;
-コマンドラインの"php -i"を実行して、設定ファイルの内容が...
いるかを確認してください。うまく反映されない場合は、設定...
間違っているか、意図した設定ファイルが使用されていません。~
-コマンドラインでは正しいのにWebサーバ経由だと上手く反映...
設定ファイルを読み込むパスが、何らかの理由により Apache ...
ホームディレクトリになっている為かもしれません。Apache の...
(例えば、C:\Apache Group\Apacheなど)に php.ini を置いて、...
して様子を見てください。
**その他 [#xa8c462b]
上手く動作しない場合は、gds32.dll や fbclient.dll(1.5以...
として存在し、かつ実行パスが通っているかを確認してくださ...
クライアント環境をセットアップするコマンド(instclient.exe...
ページ名:
新規
名前変更
ホーム
一覧
検索
最終更新
バックアップ
ヘルプ
最終更新のRSS