PostgreSQL8.1.22データベースを使用してCentOS5.5サーバーにRoundcubeをインストールしようとしています。
Phpライブラリなどの存在をチェックするインストーラースクリプトの最初のページでは、全面的に緑色のOKが表示されます。オプションのものをインストールするのも面倒でした。
2ページ目では、2つの構成ファイル(main.inc.phpとdb.inc.php)を生成します。
3ページ目は物事がうまくいかないところです:
DB構成DSNを確認してください(書き込み):NOT OK(MDB2エラー:接続に失敗しました)
構成されたデータベースが存在し、ユーザーが書き込み権限を持っていることを確認してください
DSN:pgsql:// roundcube:password @ localhost/roundcubemail
そこに表示される情報(ユーザーroundcube、パスワードpassword、サーバーlocalhost、データベースroundcubemail)はすべて正しいです。データベースroundcubemailはユーザーroundcubeに属し、書き込み権限があります。
そのデータベースに接続できない理由がわかりません。同じサーバー上のまったく同じApacheで実行されているphpPgAdminで管理しています!
更新
いくつかの詳細情報:私のpostgresログファイルにはこれらがたくさんあります:FATAL: no pg_hba.conf entry for Host "127.0.0.1", user "roundcube", database "roundcubemail", SSL off
ただし、私のpg_hba.confファイルには次のものがあります。# "local" is for Unix domain socket connections only
local all all trust
Host all all 127.0.0.1/32 trust
Telnetを使用して、ポート5432でlocalhostと127.0.0.1の両方に接続すると正常に機能します。
上記のDerfKからの答えは間違っています。 PostgreSQLは、適切に構成されていれば、roundcubeでUnixソケットを使用して使用できます。 db.inc.phpでは、次のようになります。
$rcmail_config['db_dsnw'] = 'pgsql://roundcube:*password*@unix(/tmp)/roundcube';
Pgsqlでデータベース「roundcube」の「roundcube」ユーザーをパスワード「password」で作成した場合、メインのpostgresql.confで、以下を変更してIPレイヤーでのリッスンを防止する必要があります。
listen_addresses = ''
unix_socket_directory = '/tmp'
ssl = false # There's no point in using SSL on a local UNIX socket except wasting CPU
また、これが最も重要な部分です。次の行を追加するには、pg_hba.confを変更する必要があります。
local all roundcube md5
すべてを再起動すると、TCP接続を使用するよりも完全に正常に高速に動作します(すべてのIPカプセル化を回避するため)。