MANP+CakePHPではMySQLへの接続をソケットで

cake-logo

いやいや、ちょっとハマった。。

MANPで Apache 8888 MySQL 8889 に設定していて
CakePHP の database.php に以下の設定をしたら

public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost:8889',
'login' => 'root',
'password' => 'himitsu',
'database' => 'cake',
'prefix' => '',
'encoding' => 'utf8',
);

bakeとブラウザで挙動が違う

問題点はポート

'host' => 'localhost:8889'

 

bake   繋がる
ブラウザ  繋がらない

'host' => 'localhost'

 

bake 繋がらない
ブラウザ  繋がる

色々Webをあさったけど、一番の解決策はポートを使わずソケット通信をすることらしい。

そこで以下のように直してみた。

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'port' => '/Applications/MAMP/tmp/mysql/mysql.sock',
    'login' => 'root',
    'password' => 'himitsu',
    'database' => 'cake',
    'prefix' => '',
    'encoding' => 'utf8',
);

 

bake 繋がらない
ブラウザ 繋がる

まだ繋がらない、もう一つ工夫

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

 

これで見事繋がるようになりました。

ポートは関係なし、ソケット通信だから。

根本的な理由はコンソールとWebでコンフィグが異なってる
ことなんだろうなと思いつつ、作業をすすめる。


コメントを残す

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

About Me

Nobody knows

Featured Posts