くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

Mantis/PostgreSQL のセットアップで手間取った

2014-01-28 19:51:08 | SEまわり
Mantisをセットアップしているときのこと。OS は CentOS 6.4/64bit で、Apache は 2.x系、PostgreSQL は 8系、PHP は 5.x。

公式サイトからtarball(今回はバージョン 1.2.15)ダウンロードして DocumentRoot の下に配置。
ブラウザからアクセスすると、セットアップ画面となる。
PHP のバージョンなどは問題ないと言うことで GOOD の表示が出ている。



ここでセットアップを進める前に、データベースを作っておく。

 
createdb -E UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8 -T template0 mantis


続いてブラウザに戻って、以下の情報を指定。
データベースのアカウントとパスワードは admin で統一(ローカルテストなので簡単に)

 
Type of DatabasePostgreSQL
Hostname (for Database Server)localhost
Username (for Database)admin
Password (for Database)admin
Database name (for Database)mantis
Admin Username (to create Database if required)admin
Admin Password (to create Database if required)admin
Print SQL Queries instead of Writing to the Database(チェックしない)
Attempt Installation 


こうして「Install/Upgrade Database」をクリックすると次の画面が出る。



BAD
Does administrative user have access to the database? (Database connection failed)



と書かれている。

ここから試行錯誤して解決したんだけど、結論を。

内部(library/adodb/drivers/adodb-postgres64.inc.php, L692)で pg_connect() 関数を発行して DB 接続を確立するんだけど、その引数文字列は次のようになっている。

 
"host='localhost' user='admin' password='admin' dbname='template1'"


この host 値が悪かったみたい。これを削って、次のようにすると成功する。

 
"user='admin' password='admin' dbname='template1'"


"localhost" の解決に問題があるようだ。
実際、削る前の文字列を使って次のようなプログラムを動かすと、エラー無く接続できる。

 
<php
$str="host='localhost' user='admin' password='admin' dbname='template1'";
if ( $db = pg_connect($str) ) { echo "OK\n"; }
else {echo "NG\n";}
?>


ということで、ADO ドライバの関係っぽいというところまで。

えらいこと時間かかった。

最新の画像もっと見る