Attention! Translated article might be found on my English blog.

2015年1月28日水曜日

CakePHP 2.5.8でPostgreSQLの接続にIPv6を利用していた

参考: PHP/CakePHPがPostgreSQLに接続できない場合の原因をいくつか紹介 - ウェブ関連技術調査

/etc/hostsの内容やOS次第かなとは思いますが、app/Config/database.php内のDB設定で'host'が'localhost'の場合IPv6で接続しようとしており、

SQLSTATE[08006] [7] FATAL: Ident authentication failed for user 'hoge'

というようなエラーが出て接続できませんでした。自鯖の環境はCentOS 6です。
修正前のpg_hba.confは

local   all         all                               trust
host    all         all         127.0.0.1/32          trust

host    all         all         ::1/128               ident

としていたのですが、::1/128の方もtrustにすると無事接続できました。
pg_hba.confを変えたくない場合は上述のdatabase.phpの'host'を'127.0.0.1'と明示的にIPv4を指定することでも接続可能でした。

あんまりCakePHPは関係ないですかねこれ。