freebsd 7.x にtarballで入れたphppgadminが動かない、そんなとき

トラブルの発生条件は、以下の通り。

  • FreeBSD 7.2-RELEASE
  • portinstall でインストールした apache22 php5 postgresql-8.3.7
  • 公式サイトからtarballで設置した phppgadmin-4.2.2

エラーメッセージはこのようなものでした。



Notice: Undefined offset: 1 in ***/phppgadmin/dbexport.php on line 75

Notice: Undefined offset: 1 in ***/phppgadmin/dbexport.php on line 78

そんなとき。

これは、safe_mode_exec_dir が /usr/bin になっており、かつ、pg_dumpとpg_dumpallが/usr/local/bin にインストールされているためです。

http://jp.php.net/manual/ja/ini.sect.safe-mode.php によれば、

safe_mode_exec_dir string

PHPがセーフモードで動作する場合、system()や その他のプログラム実行関数を、 このディレクトリ以外で起動することは拒否されます。 Windowsを含む全ての環境において ディレクトリのセパレータとして/を使用する必要があります。

これを解消する方法は3つあります。

  1. safe_mode_exec_dirの利用をやめる
  2. safe_mode_exec_dirを/usrにする
  3. pg_dumpとpg_dumpallが/usr/local/binを/usr/binに配置する

今回は3を採用しました。

操作手順は以下の通りです。


cd /usr/bin
ln -s ../local/bin/pg_dump .
ln -s ../local/bin/pg_dumpall .

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>