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

Mac OS X"panther"でPHPからpostgresへの接続

発言者:makoto
( Date Sunday, November 28, 2004 00:34:44 )


こんばんわ、初めまして!
MacでPHPからpostgresへの接続の仕方を知っている方がおりましたらお手数ですが教えて下さい。一度postgresをインストールしてterminal上で使えたんですが、marcさんのサイトからphp4.3.9のパッケージをインストールしたところterminal上でpsql,postmasterのコマンドが使えなくなり、エラー(〜〜〜5439?)が出てしまいます。さらにブラウザ上でphpよりDBに接続したところ接続にも失敗してしまいます。システムはapache1.3.29,postgres7.4.6,php4.3.9です。
自分のpostgresのdataディレクトリを/User/postgres/に作成してしまったことが原因でしょうか?誰か知っている方がいたら教えて下さい。お願いします。


しましま さんからのコメント
( Sunday, November 28, 2004 22:14:39 )

こんばんは!

エラーメッセージの内容がはっきりしないので、詳しくは言えませんが、PostgreSQLサーバーはちゃんと起動してますか?
アクティビティモニタか、netstatコマンドでポート5432にPostgreSQLがいることを確認してみてください。

makoto さんからのコメント
( Monday, November 29, 2004 14:47:24 )

こんにちわ!しましまさん返答ありがとうございます。pg_ctlで起動しようとすると、FATAL: xx000:failed to initialize lc_messages to ""
    LOCATION: InitializeGUCOptions,guc.c:1867
    postmaster successfully started
とメッセージが出ますがpostmasterが起動している様子がなく、createdbなどのコマンドも使うことができません。インストール時に問題があるんでしょうか?

makoto さんからのコメント
( Sunday, December 05, 2004 00:18:44 )

こんばんわ。ようやく、macでphp,postgreSQLのインストールがうまくできて個々では動くようになりました。それで、postgreの自動起動の設定について困っています。postgreSQLのディレクトリ内のstart-scriptのファイルを指示通りに設定したのですが、電源を入れた時点でうまく起動してくれません。このことについて詳しく知っておられる方がおりましたら教えてはいただけないでしょうか。
  動作環境  mac OS X 10.3.6
                appach(既存時の物) php4.3.9  postgreSQL7-4-6です。
それから、phpからpostgreSQLのDB接続の仕方についても詳しく教えていただきたいです。(依存関係などに関するファイル設定など)
 なにぶん最近ソースのコンパイルなどをやり始めた素人ですので、なるべくわかりやすく教えていただけるととても助かります。よろしくお願いします。

しましま さんからのコメント
( Tuesday, December 07, 2004 22:31:11 )

インストール成功おめでとうございます。

PostgreSQLの自動起動の設定って、/Library/StartupItemsの事ですよね?
このディレクトリの中に、PostgreSQLとかっていう実行ファイルがあると思いますが、
このファイル・パーミッションが実行可能になっていて、ファイルの内容として

su - postgres -c '/usr/local/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile -o -i'

などと書かれていれば、たぶん起動すると思います。(-Dのパス設定に注意)
もし起動時に問題が発生すれば、System.logにエラーメッセージが残ってるかもしれません。

PHPに関しては、http://www.php.net/manual/ja/ に日本語のマニュアルがあります。
この中の「LXXXVII. PostgreSQL 関数」にPostgreSQL関連の関数が書かれています。
具体的に言うと、

$db = pg_connect("dbname=testDB user=myName");
$result = pg_query($db,"select * from testTable");
$row = pg_fetch_array($result, 0, PGSQL_ASSOC);

のような感じでデータベースにアクセスできます。