【総額1000ポイント】PHPとPostgreSQLの連携がうまくいきません。

やたら長くなったので、別ページに詳細を載せました。助けてください。なんとか宜しくお願い致します。
http://d.hatena.ne.jp/honestaholic/20061101#p1

回答の条件
  • 1人5回まで
  • 登録:2006/11/01 11:21:17
  • 終了:2006/11/01 18:25:30

回答(6件)

id:Yota No.1

Yota回答回数453ベストアンサー獲得回数282006/11/01 12:20:04

ポイント5pt

yumではPostgreSQLのバージョンが7のところ、8をインストールしようとしているため、はなしがややこしくなっていますね。

php-pgsqlというパッケージが、PostgreSQL7用にできているのではないですか。

わたしが考える解決策。

1.postgresql8とphp-pgsqlで同バージョンのrpmを探してくる。

2.PHPとPostgreSQLをソースからインストールする。

3.どうしてもPostgreSQL8でなければいけない理由を考えてみて、なければyumのパッケージに従う。

id:honestaholic

pgsql8は、その後の追加モジュールのために必須です。

1と2の両方でいろいろ検索しているのですが、決定的なものを見つけられません・・・

2006/11/01 12:22:59
id:Yota No.2

Yota回答回数453ベストアンサー獲得回数282006/11/01 12:25:12

yumではPostgreSQLのバージョンが7のところ、8をインストールしようとしているため、はなしがややこしくなっていますね。

php-pgsqlというパッケージが、PostgreSQL7用にできているのではないですか。

わたしが考える解決策。

1.postgresql8とphp-pgsqlで同バージョンのrpmを探してくる。

2.PHPとPostgreSQLをソースからインストールする。

3.どうしてもPostgreSQL8でなければいけない理由を考えてみて、なければyumのパッケージに従う。

id:honestaholic

なぜか多重投稿

2006/11/01 14:02:06
id:furutanian No.3

furutanian回答回数112ベストアンサー獲得回数142006/11/01 14:05:59

ポイント20pt

RHEL や CentOS を使う価値の大半は、オフィシャルバイナリパッケージ以外を利用しないことによる、管理のしやすさです。

CentOS4 を使う場合、postgresql-7.4.7 を使うに越したことはないですが、どうしても 8 系を使いたい場合は、RHEL に近い Fedora のパッケージを利用するといいでしょう。

Fedora 4,5,6 で、以下のバージョンが収録されています(5が無難かな)。

Fedora Core 4: postgresql-8.0.3-1.i386.rpm

ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/4/i386/os/Fedora/RPMS...

Fedora Core 5: postgresql-8.1.3-1.i386.rpm

ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/5/i386/os/Fedora/RPMS...

Fedora Core 6: postgresql-8.1.4-1.1.i386.rpm

ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/6/i386/os/Fedora/RPMS...

関連する周辺パッケージについて個々に、rpm -e, rpm -ivh ですべて入れ替えてみましょう。

id:honestaholic

postgresql8はすでに入っています・・・

入らなくて困っているのは、php側のモジュールであるphp-pgsqlなのですorz

2006/11/01 14:48:27
id:kunyami No.4

kunyami回答回数24ベストアンサー獲得回数42006/11/01 14:05:19

ポイント20pt

CentOS 4では実施していないのですが、CentOS 3では以下のような方法で可能でした。

以下はCentOS 4のファイルで記述しています。

yumで

postgresql-libs-7.4.13-2.RHEL4.1.i386.rpm

をインストールすることでphp-pgsqlの要求は満たすはずです。

これはクライアント用のライブラリですので、PostgreSQL本体のバージョンが8.1でも利用できます。

これに加えてphp-pgsqlをインストールします。

PostgreSQL8.1.5のパッケージ郡を必要に応じてインストールします。

これは最低限postgresql-server-8.1.5-6PGDG.i686.rpmがあれば大丈夫です。

id:honestaholic

なるほどなるほど・・・

2006/11/01 14:36:07
id:O-saka No.5

O-saka回答回数1ベストアンサー獲得回数02006/11/01 14:08:07

ポイント850pt

(PostgreSQL 8.1.5 は本家のパッケージを利用しているものとして説明します)

CentOS 4.4 標準の PostgreSQL は 7.1.13 ですが、このパッケージが提供するライブラリは libpq.so.3 です。対して PostgreSQL 本家で提供されている PostgreSQL 8.1.5 が提供するライブラリは libpq.so.4 です。

CentOS 4.4 標準のパッケージ群で PostgreSQL を要求するものは、当然、前者である libpq.so.3 を必要とします。今回 honestaholic さんは、PostgreSQL 8.1.5 をインストールした上で、CentOS 4.4 標準の PHP をインストールしようとしたため、yum が次のような動作をしたものと考えられます。

1. php-pgsql (centos) が libpq.so.3 を必要としたため、既にインストールされている postgresql-libs-8.1.5-3PGDG.i686.rpm (postgres) を postgresql-libs-7.1.13-2.RHEL4.1.i386.rpm (centos) に差し替えようとした

2. しかし postgresql-server-8.1.5-3PGDG.i686.rpm (postgresql) などが libpq.so.4 を必要とするため、差し替えられない

3. 依存関係エラーとして終了

解決策はいくつか存在しますが、PHP のリビルドがよろしいのではないかと思います。

1. http://ftp.riken.jp/Linux/centos/4.4/centosplus/SRPMS/php-5.0.4-... を取得。5.0.4-5 は回答時点の最新版ですので、さらに新しいバージョンが存在しないか、事前に確認して下さい

2. rpmbuild --rebuild php-5.0.4-5.centos4.src.rpm を実行。この際、依存関係でエラーが出るかもしれませんが、エラーメッセージを確認の上、yum で不足しているパッケージをインストールして下さい。ただし、postgresql-devel だけは本家の postgresql-devel-8.1.5-3PGDG.i686.rpm を使うようにするのを忘れないで下さい

3. /usr/src/redhat/RPMS/i386 に php-pgsql-5.0.4-5.centos4.i386.rpm が生成されていますので、rpm -Uvh php-pgsql-5.0.4-5.centos4.i386.rpm としてインストールして下さい

4. 独自に生成した php-pgsql が上書きされないよう、/etc/yum.conf に exclude=php-pgsql という行を追加して下さい

以上です。本当は 2. で rpmbuild する前に spec ファイルを編集し、独自の Release 番号をつけた方がよいのですが、必須ではないのと、Linux 初心者であるということで、今回は省略しました。お時間が空いた時にでも、調べてみることをお勧めします。

また 4. によりセキュリティ修正などが行われた場合でも、php-pgsql は yum によって自動的にアップデートされなくなりますので、ご自身で管理される必要があるのを忘れない下さい。

id:honestaholic

この壷はよいものだ

2006/11/01 14:36:24
id:Yota No.6

Yota回答回数453ベストアンサー獲得回数282006/11/01 14:43:05

ポイント5pt

2回同じ回答してしまったバカです。

ブラウザの戻るボタンを押してしまったと思います。

いったん登録されてしまうと消せないみたいですね。

大変失礼しました。

PostgreSQLのインストール

http://oss.kk-ntc.co.jp/jpug/pukiwiki/pukiwiki.php?PostgreSQL%28...

PostgreSQL7.4.x の解説ですが、8.1.*でも一緒です。

PHPのコンパイル時のオプション

with-pgsql=/usr/local/pgsql

でどうでしょう。

  • id:furutanian
    #3の回答者です。
    方法はいろいろありますが、私は「周辺パッケージごと」入れ直す方法をお勧めします。
    つまり、postgresql, php-pgsql を含めた周辺パッケージを、すべて Fedora X のものに置き換える方法です。
    試してないので強くはいえませんが、うまくいけば一番作業量は少ないと思います。
  • id:honestaholic
    皆様、ややこしいことに返事いただいて本当にありがとうございます。
    #5のO-saka氏が、postgres8と連携するようにコンパイルしたphp-pgsqlのrpmを作ってくださり、それをインストールすることで解決できました。
    postgres8は既に導入済みですので、postgres8の導入方法についてのみお教え頂いた方にはあまり割り振れませんが、そのあたりを考慮してポイントを割り振らせていただこうと思います。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません