[PHP-users 11049] Re: db3について
Youichi Iwakiri
php-users@php.gr.jp
Wed, 23 Oct 2002 13:08:11 +0900
いわきりです
GT wrote in <B9DB71BD.B41B%perl@getpresent.com> :
>DBM形式のデータベースを使いたいのですが
>下記のコードだとエラーになってしまいます。
>なぜなのか教えてください。
>$DB = dba_open($datafile, "n", "db3") or die("xxx");
>dba_close($DB);
>エラーメッセージ
>Warning: no such handler: db3 in /xxx/xxx/test.php on line 27
configureで--with-db3オプションを指定せずに
構築されたdbaモジュールだからでしょう。
>また、これはPHPがインストールしていれば
>必ず使えるというわけではないのでしょうか?
configureで特にDBを指定しない場合は、
mysqlが利用できるだけで、他のDBは有効になりません。
また、DBM形式のDBを利用するためには、
使用する個々のDBMを有効にするオプションを指定して構築されていなければ
なりません。
phpinfo()で確認して見てください。
+-------------------+-----------------------+
|DBA Support | Enabled |
+-------------------+-----------------------+
|Supported handlers | gdbm ndbm db2 db3 ... |
+-------------------+-----------------------+
上記の様にSupported handlersにdb3が無ければ利用できません。
>また、ある書籍には下記のように書いてあるのですが
>$DB = dbmopen($datafile, "n") or die("xxx");
>dbmclose($DB);
>これは
>$DB = dba_open($datafile, "n", "dbm") or die("xxx");
>dba_close($DB);
>とは違うのでしょうか?
結論から言えば、違います。
構築時にgdbmまたはndbmを検出し、それに合わせた
dbmopen関数が提供されます。
XX DBM関数は、deprecatedな位置づけですので
XVII (dbm型の)データベース・アブストラクション レイヤー関数
を使った方が良いです。
--
Youichi Iwakiri