PHP テスト環境として仮想化環境に Ubuntu Server を入れて使用しているのですが、
突然 Internal Server Error が発生するようになりました・・・
環境は次の通り。
- Ubuntu Server 12.04 LTS
- Apache2
- libapache2-mod-fastcgi
- php5-fpm
バージョンは「apt-get update」⇒「apt-get upgrade」で更新した最新のパッケージ版です。
とりあえずログを見てみると何やらパーミッション関連のエラーが。
(13)Permission denied: FastCGI: failed to connect to server “/usr/sbin/php5-fpm”: connect() failed
ググってみるとそれらしいのを発見。
FPM with apache2 not working (Permission denied)
どうやらソケットを使用している場合にソケットファイルの所有者と php5-fpm の実行ユーザが異なることが原因のようです。
解決方法としては
- php5-fpm の実行ユーザーを www-data (たぶんデフォルト)
- Unix ソケットのファイルパスを /var/run/php5-fpm.sock
とした場合、コンフィグファイル /etc/php5/fpm/pool.d/www.conf を
listen.owner = www-data listen.group = www-data ;listen.mode = 0666
のようにアンコメント。(modeは不要)
※Ubuntu 14.04 LTS の場合はデフォルトで有効の模様
そしてphp5-fpm を再起動させると
sudo service php5-fpm restart
エラーはなくなりました。
他にもソケットのファイルのオーナーを無理矢理変更したり、
sudo chown www-data /var/run/php5-fpm.sock
パーミッションを無理矢理 666 にしたり、
sudo chmod 666 /var/run/php5-fpm.sock
しても一応動きましたが。
以前は問題なく使えていたのですがアップデートで仕様がかわったのかもしれません。
テスト環境ということもありしばらく使っていなかったので気が付きませんでした・・・