- - PR -
RedHat9 で PHP から PostgreSQL 接続。&別機からの接続方法
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-21 05:32
はじめて、投稿致します。
今現在まる二日かかっても原因がわからず、是非お力をお借りしたいと思いここにきました。 環境。 OS:RedHat9 DB:PostgreSQL 7.3.4 PHP:PHP4 流れ。 RedHatなので、便利なapt-get install で apt-get install postgresql apt-get install postgresql-jdbc apt-get install postgresql-devel apt-get install postgresql-server apt-get install postgresql-test apt-get install postgresql-libs を実行しインストールしました。 JdbcはそのうちJspから接続するためにと思い先に入れておいたものです。 DB: member テーブル:memberdb1 となっております。 PHPの接続部分ソース。 ローカルIPを指定してるが、DB本機からの接続です。 $DBHostName = "192.168.1.24"; $Port = "5432"; $DBName = "member"; $User = "postgres"; *又は別ユーザー[kami] $Passwd = ""; // DB に接続 $con = pg_connect("host=$DBHostName port=$Port dbname=$DBName user=$User password=$Passwd"); で、接続しようとした際に Fatal error: Call to undefined function: pg_connect() in /home/db.php on line 11 と、いうエラーが表示されできません。 @ITや、その他のサイトもしらべ、TCP/IPの設定なども気に係り以下のような事もしました。また、実際には本機からではなく別機からの接続が目的です。 /var/lib/pgsql/data/postgresql.conf の中身を tcpip_socket = true port = 5432 vi /var/lib/pgsql/data/pg_hba.conf の中身を host all all 0.0.0.0 0.0.0.0 trust vi /etc/rc.d/init.d/postgresql の中身を su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p /usr/bin/postmaster -o '-p ${PGPORT} -o -i' start > /dev/null 2>&1" < /dev/null 設定をいじったのは上記のみです。 参考に致しましたサイトは http://www.kvasir-sora.org/page/document/postgresql http://www.itmedia.co.jp/enterprise/0307/18/epn20.html http://www.hizlab.net/app/php2pgsql.html#pgfunc http://www.hellohiro.com/jdbcpostgresql.htm http://66.102.7.104/search?q=cache:j1SstuTIwGQJ:www.atmarkit.co.jp/bbs/phpBB/viewtopic.php%3Ftopic%3D12342%26forum%3D12%2611+jdbc7.1-1.2.jar&hl=ja です。 なにとぞ宜しくお願い致します。 (間違いがあったので編集しました。) [ メッセージ編集済み 編集者: kami 編集日時 2004-08-21 05:34 ] | ||||
|
投稿日時: 2004-08-21 07:04
PostgreSQL にばっかり目が行って、 PHP との「連携」で PHP -> PostgreSQL 呼び出し
が行われる事を忘れておられますな。libphp4.so っちゅぅ Shared Object(Library) に 当該関数が含まれてないと、あぁいうメッセージが出ます。 configure の時、 $ ./configure --with-pgsql=shared とか言うオプション付けずに make されたイメージをインストールされておられますな? configure の時、指定オプションで必要な機能が取捨選択されるんで、何も付けないと 「連携」の事は無視されます。Apache のバージョンが古いと httpd.conf にも LoadModule php4_module /usr/apache/libexec/libphp4.so こういうのとか、他二箇所ほど挿入する必要があるかと。パスは各自の環境で変える必要が ありますが。 | ||||
|
投稿日時: 2004-08-21 20:09
さっそくのご解答ありがとう御座います。
rpm -e php でアンインストし Net上からphp-4.3.8をダウンロードしてきました。 で、tar xvfz php-4.3.8.tar.gz で解凍し移動。 その後、教えていただいた./configure --with-pgsql=sharedを行い male , make install を行ないました。 しかし、rpm -aq|grep php でインストされているか確認すると 表示されません;; このコマンドはRPMでインストールした場合のみなのでしょうか? また、 引用 ―――――――――――――――――――――――――――――――― LoadModule php4_module /usr/apache/libexec/libphp4.so こういうのとか、他二箇所ほど挿入する必要があるかと。パスは各自の環境で変える必要が ありますが。 ―――――――――――――――――――――――――――――――― 他二箇所。も教えていただきたく思います。 どうか、宜しくお願い致します。 updatecd を行い locate libphp.so をしましたが、見つけることが出来ませんでした。 似たようなものですと、libphp.module.in というファイルが見つかりました。 *updatedb〜を追記 [ メッセージ編集済み 編集者: kami 編集日時 2004-08-21 20:17 ] | ||||
|
投稿日時: 2004-08-21 21:47
こんばんわ.
はい. rpm -qa とした場合は,rpm で導入したものの list を出力します. なので,source から make; make install した場合は出力されません. rpm で導入したいなら,source packege を取ってきて, rebuild する必要があります. ./configure option を追加するくらいならそれほど困難ではないと思いますので, source package を install して spec file を編集して rpmbuild -bb すればよいかと思われます. その後,生成された rpm package を普通に rpm -i して, rpm -qa| grep php すれば出力されます. 余計な差し出口,申し訳ありません. php の詳しいご説明はよろしくお願いいたします -> コブラ様 | ||||
|
投稿日時: 2004-08-21 22:47
php で postgres を扱う関数がないと言うエラーがでてるんですよね。
必要なパッケージがインストールされてないのではないでしょうか? apt-get install php php-pgsql でよかったりします。fedoralegacy.orgからとってきたパッケージは マルチバイトの関数は使えませんが…。 | ||||
|
投稿日時: 2004-08-22 04:14
皆様、解答ありがとう御座います。
apt-get install php-pgsql を実行させていただきました。 また、一回PHPをアンインストしていたこともありPHP周りを全て入れなおしました。 入れなおした所 libphp4.so がみつかり、無事httpd.confの方に追記いたしました。 で、早速PHPから接続を試みた所接続できませんでした。 設定のまとめ: DB名:member テーブル名:memberdb1 です。 ユーザー名:kami 一時的なパスワードとして、qwer1234 です。 PHPソース(接続部分) −−−−−−−−−−−−−−−−−−−−−− $con = @pg_connect("dbname=member user=kami passwprd=qwer1234"); if (!$con) { die("データベースに接続できませんでした"); −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− を、実行したところ "データ−ベースに接続できませんでした" の表示がでました。 この表示がでるということで 関数エラー ではなくなりました。 また、調べてみたところ ユーザー に対しての参照などの権限を与えなくてはいけない? と、知り以下のコマンドを実行いたしました。 grant select,insert,update,delete on menberdb1 to kami; コマンドを実行し、無事権限を与える事はできたのですがやはり接続できません。 (今考えるとこれはデータベース自体に接続できてからの事ですね^^; 上記のような流れです。 皆様、ご指導の程宜しくお願い致します。 | ||||
|
投稿日時: 2004-08-22 09:20
Postgres は勿論起動してますな?
postmaster とか。 後、 $ psql -l とか打ったら何て出ます? | ||||
|
投稿日時: 2004-08-22 12:37
psql 等のツールを使っても、データベースに接続して問題となっている SQL 文を実行することができないのでしょうか?
まずはそこがクリアにしておく必要があると思います。 $ psql -U kami memberdb1 Password: qwer1234 memberdb1=> (SQL 文) |
1|2|3
次のページへ»