FuelPHPにてFacebook向けのOPAuthを試していたら半日ハマったので備忘メモ。fuelPHPのログに出るエラー内容は以下のとおり。

ERROR - 2014-07-03 15:05:09 --> Warning - session_start(): open(/var/lib/php/session/sess_bbbbbbbbbbbbbbbbbb, O_RDWR) failed: Permission denied (13) in /vagrant/XXXXX/fuel/packages/opauth/classes/OpauthStrategy.php on line 178
ERROR - 2014-07-03 15:05:37 --> Warning - file_get_contents(https://graph.facebook.com/oauth/access_token?client_id=XXXXXXXXXXXXXX&client_secret=YYYYYYYYYYYY): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in /vagrant/XXXXX/fuel/packages/opauth/classes/OpauthStrategy.php on line 417
ERROR - 2014-07-03 16:40:04 --> Warning - session_start(): open(/var/lib/php/session/sess_aaaaaaaaaaaaaaaaaaa, O_RDWR) failed: Permission denied (13) in /vagrant/XXXXX/fuel/packages/opauth/classes/OpauthStrategy.php on line 178

あとnginxにはこんなメッセージも出る。 ぱっと見、タイムアウトが原因っぽく見えるけど、それは不正解。

upstream timed out (110: Connection timed out) while reading response header from upstream fastcgi

ホント何が厄介だったって、ブラウザからデバッグしていたときに、最初に見える画面がnginxの504エラーなこと。 するとphp-fpmがタイムアウトしているように見えるのだが、実際のエラーはfuelphpのログが正解で、こっちを直せばいい。

解決方法は超簡単で

$ sudo chgrp -R nginx session/

でおしまい。

環境

Vagrant(CentOS)上に Nginx + php-fpm + fuelphpで動かしている。

おまけ

外部から落としてきたVagrantパッケージを使っていたので、httpdがプリインストールされていた。 そのせいで、/var/lib/php/session のグループがapacheになっていて、nginxから書き込めないのでドハマり。

VMのイメージはやっぱり自分の手で作ったほうがいいかも。高い学習コストだったが、良い教訓になった。