Mantisをセットアップしているときのこと。OS は CentOS 6.4/64bit で、Apache は 2.x系、PostgreSQL は 8系、PHP は 5.x。
公式サイトからtarball(今回はバージョン 1.2.15)ダウンロードして DocumentRoot の下に配置。
ブラウザからアクセスすると、セットアップ画面となる。
PHP のバージョンなどは問題ないと言うことで GOOD の表示が出ている。
ここでセットアップを進める前に、データベースを作っておく。
続いてブラウザに戻って、以下の情報を指定。
データベースのアカウントとパスワードは admin で統一(ローカルテストなので簡単に)
こうして「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" の解決に問題があるようだ。
実際、削る前の文字列を使って次のようなプログラムを動かすと、エラー無く接続できる。
ということで、ADO ドライバの関係っぽいというところまで。
えらいこと時間かかった。
公式サイトから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 Database | PostgreSQL | 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 ドライバの関係っぽいというところまで。
えらいこと時間かかった。