MacPorts から phpPgAdmin をインストールする

phpPgAdmin をインストールする

% sudo port install phppgadmin

ブラウザから phpPgAdmin へアクセスできるようにする

phpPgAdmin がインストールされたパスを Apache のドキュメントルート下にシンボリックリンクを張る。
/Apache/Document/root/ は実機の DocumentRoot で読む。

% ln -s /opt/local/www/phppgadmin /Apache/Document/root/phppgadmin

phpPgAdmin へアクセスできるように設定をする

まず、PostgreSQL が起動していなければ、起動させる。Apache も同様で起動していなければ、起動させる。

sudo su postgres -c 'pg_ctl -D /opt/local/var/db/postgresql84/defaultdb -l /opt/local/var/db/postgresql84/logfile start'

そして、http://localhost/phppgadmin/ にアクセスをすると、下記のエラーが表示されるはず。

Deprecated: Assigning the return value of new by reference is deprecated in /opt/local/www/phppgadmin/classes/Misc.php on line 342

PHP 5 からオブジェクトは参照渡しがデフォルトになったが、PHP 4.x では異なっていた。そのため、PHP 4.x で参照渡しを実現するために「&=」という記述方法で参照渡しであることを明示していた。しかし、この記述方法は、PHP 5.3.x は、この記述方法ではエラーになってしまう。
なので、この記述を修正する。

% sudo vi /opt/local/www/phppgadmin/classes/Misc.php

で開き、342 行目の

// $data =& new $_type($_connection->conn);
$data = new $_type($_connection->conn);

と修正する。
修正をしたら、またログインを試みる。設定したパスワードでもログインができないので、phpPgAdmin の設定ファイル phppgadmin/conf/config.inc.php を修正する。
修正をする前に下記の設定を行っておいて、PostgreSQL のコマンド「pg_dump」と「pg_dumpall」にパスを通しておく。

% sudo ln -s /opt/local/lib/postgresql84/bin/pg_dump /opt/local/bin/pg_dump
Password:
% which pg_dump
/opt/local/bin/pg_dump

% sudo ln -s /opt/local/lib/postgresql84/bin/pg_dumpall /opt/local/bin/pg_dumpall
% which pg_dumpall
/opt/local/bin/pg_dumpall

phpPgAdminの設定ファイルを修正するのは下記の箇所。元からある内容はコメントアウトしておく。

// $conf['servers'][0]['host'] = ”;
$conf['servers'][0]['host'] = ‘localhost’;

// $conf['servers'][0]['pg_dump_path'] = ‘/usr/bin/pg_dump’;
// $conf['servers'][0]['pg_dumpall_path'] = ‘/usr/bin/pg_dumpall’;
$conf['servers'][0]['pg_dump_path'] = ‘/usr/local/pgsql/bin/pg_dump’;
$conf['servers'][0]['pg_dumpall_path'] = ‘/usr/local/pgsql/bin/pg_dumpall’;

// true だと Postgre (管理者)ユーザでログインできない
// $conf['extra_login_security'] = true;
$conf['extra_login_security'] = false;

ここまで修正をして、やっとログインができる。
が、また画面には次のエラーが表示されているはずだ。

It is not safe to rely on the system's timezone settings.
Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
We selected 'Asia/Tokyo' for '9.0/no DST' instead

Deprecated: Function split() is deprecated in /opt/local/www/phppgadmin/libraries/adodb/drivers/adodb-postgres64.inc.php  on line 663

である。
最初のエラーは php.ini に時間帯の設定が記述されていないことを知らせるエラーで、もうひとつは使用が推奨されていない関数を呼び出していることを示すエラーである。

この関数は PHP 5.3.0 で 非推奨となりました。この機能を使用しないことを強く推奨します。

http://php.net/manual/ja/function.split.php

まずは、これらのエラーを修正する。時間帯の修正は、

% sudo vi /opt/local/etc/php5/php.ini

でファイルを開き、

[Date]
; Defines the default timezone used by the date functions
; date.timezone = 
date.timezone = Asia/Tokyo

「date.timezone = Asia/Tokyo」を追記する。そして、非推奨の関数は、

の2つのファイルで一回ずつ使われているので、下記のように修正する。

// phppgadmin/libraries/adodb/drivers/adodb-postgres64.inc.php
// $host = split(":", $str);
$host = explode(":", $str);

// phppgadmin/libraries/adodb/adodb-datadict.inc.php
// list(,$column_def) = split("[\t ]+",$first,2);
list(,$column_def) = explode("[\t ]+",$first,2);

を修正する。
ここまで修正をして、PHP のエラーが消える。