このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

作ったデータベースを外から見てもらう方法。

発言者:まえばし。
( Date Sunday, October 14, 2001 16:52:58 )


お世話になっております。

さて、PostgreSQL+PHP4でデータベースを作っているのですが、
作ったものをHPで見てもらうために、terminalで"nobody"ユー
ザーを作りました。
(createuser nobodyでつくって、"CREATE USER"と表示され
ました。)

そして、下記のような*.phpファイルを作ったのですが、HPを
開くと「データベースに接続できなかったよ。」と表示されて
しまいます。

<?php
@$con = pg_connect("","","test");  // ・ヌ。シ・ソ・ル。シ・ケ、ヒタワツウ、ケ、?
if ($con == false) {
  print("データベースに接続できなかったよ。");
  exit;
}

ひょっとして、OSXはterminalでユーザーを追加してはいけなくて
NetInfo等で追加するのでしょうか?。
(ただ、もしそうだとすると、どういう風にnobodyをNetinfoManager
で追加すればいいのかが分かりません。)
それとも、↑は見当はずれで「データベースを公開するには他の方法
がある」と言う場合にはおしえていただければと思います。

よろしくお願いします。


Ton さんからのコメント
( Sunday, October 14, 2001 21:39:11 )

httpd.confのデフォルトでUserがwwwですからnobodyではなくて,wwwでの
接続だと思います。もしくはhttpd.confのUserとGroupをnobodyに変えれ
ばよいはずです。

あとgrant文でユーザーにテーブルへのアクセス権限を与えなくていけま
せん。

→  http://kwarin.org

まえばし。 さんからのコメント
( Monday, October 15, 2001 09:06:28 )

うまくいきました!!>tonさん
www を追加したら表示されるようになりました。
(しかし、その後の場所(source)でしっぱいしていることを
 発見してしまいましたが。(^^;))

どうもありがとうございました。

重松修 さんからのコメント
( Monday, October 15, 2001 17:02:09 )

取りあえず、幾つか気づいたこと。

pg_connect() だとか、DB に依存するコードは使わない方が良いでしょう。
たとえば、PEAR, PHPLIB を使えば、DB への依存を最低限におさえられます。

PHPLIB では、local.inc の設定が済んでいるものとして、

// myDatabase は db_sql クラスを拡張して test に繋ぐもの
$db = new myDatabase; 
$sql = 'select * from hoge where uge = 1 order by uge';
if(!$db->query($sql)){
  /* エラー処理 */
}
while($db->next_record()){
  $db->p('uge');
}

のように処理できます。:-)

あと、print して exit するなら、die ってなのがあります。

die('エラーみたい');

は

print 'エラーみたい'; exit();

とほぼ等価です。

まえばし さんからのコメント
( Tuesday, October 16, 2001 10:54:33 )

いつもいろいろありがとうございます。>重松さん

phplibは、インストールがうまく行かない(サンプルスクリプト
が正常に動かない)ので、一時中断しているのですが、またトラ
イしてみようかと思っております。
ところで、PEARについてお勧めのページ(or書籍)はございます
でしょうか?。
PEARについて、勉強してみたいと思っているのですが、手元の
書籍ではほとんど触れられておりません・・。
(「PHP4でカンタンWebDB構築ガイド」と「PHP4徹底攻略」)

なにかオススメ情報源があれば教えて頂ければと思います。


重松修 さんからのコメント
( Tuesday, October 16, 2001 13:46:53 )

PEAR に関しては、私も勉強する暇無くて、あまり情報持ち合わせていないですが、
以前探したときには、日本語のまとまった情報ありませんでした。
とりあえず、WEB+DB Press に記事があるそうですが、私は買っていないので詳細不明です。
将来性を考えると、PHPLIB よりも PEAR の方が良いとは思いますが。。。
とりとめの無い返信でごめんなさい。

まえばし さんからのコメント
( Tuesday, October 16, 2001 16:22:44 )

早速のお返事どうもありがとうございます。>重松さん

うーん、現状日本語情報が少ないのですね・・(^^;)。
こちらも取りとめのない返信ですみません・・・(^^;)。

何かいい書籍を見つけることがありましたらこちらも連絡
いたします。

sai さんからのコメント
( Wednesday, October 17, 2001 11:07:22 )

pg_connect()呼び出しを下記のようにうuserオプションを指定する形で
やればhttpd.confのUserディレクティブで指定したuser以外で接続
できるようです。
最近は$conn=pg_connect("host=xxx dbname=test user=nobody");
のような呼び出し方の方が主流のようだと聞いています。

$conn = pg_Connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword "); 

→  http://www.zend.com/manual/ref.pgsql.php

まえばし さんからのコメント
( Wednesday, October 17, 2001 21:17:18 )

↑このような設定の仕方もあるのですね。
(そして、こちらの方が主流になってきている・・。)

情報ありがとうございます。>saiさん。

(適宜上手に使えるかは分かりませんが(^^;))最近みなさんの
アドバイスのおかげでいろいろ知識が付いた気がします(^^)。