CakePHPがPostgreSQLに接続できない場合の原因をいくつか紹介 †CakePHPをPostgreSQLに接続させるため、database.phpを編集してブラウザからCakePHPの画面を見ると Cake is NOT able to connect to the database. のメッセージが出力され接続できない場合のいくつかの原因を紹介します。 スポンサーリンク 使用環境 †使用環境は以下の通りです。
参考資料 †以下 db.just4fun.biz の記事です。 以下 linux.just4fun.biz の記事です。 CakePHPで設定したdatabase.php †CakePHPに設定したPostgreSQL用のdatabase.phpを以下に記します。 $ cat app/config/database.php
var $default = array( 'driver' => 'postgres', 'connect' => 'pg_connect', 'host' => 'localhost', 'login' => 'sakura', 'password' => '*********', 'database' => 'sakuradb', 'encoding' =>'utf-8', 'prefix' => ''); } PostgreSQL側の設定調査・pg_hba.conf †PostgreSQLのpg_hba.confの設定を見直してみます。 # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust pg_hba.confを上記に記した変更(trustに変更)し、PostgreSQLを再起動しブラウザからCakePHPに接続するとブラウザに以下のように表示されれば正常に接続されました。 Cake is able to connect to the database. PostgreSQL側の設定調査・postgresql.conf †リッスンアドレスやポートの設定に問題は無いでしょうか? #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) #port = 5432 # (change requires restart) 本設定については、「PostgreSQLでIPv6のリッスンを無効にしたい場合の対処」を参考にしてください。 /etc/hostsに問題はないでしょうか? †hostsファイル内のlocalhostやサーバーのホスト名に設定の誤りはないでしょうか? # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 iptablesの設定に問題はないでしょうか? †iptablesの設定によりPostgreSQLへ接続できないようになっていないでしょうか? SELinuxが動作していませんか? †ApacheからのPostgreSQLアクセスでSELinuxが動作し接続できない可能性があります。 以上、CakePHPからPostgreSQLに接続できない原因をいくつかあげてみました。 スポンサーリンク |